Народ — у меня проста задачка: нужно поверх xml layout рисовать динамически векторые дули :) Вроде все просто, написал вот такой код. В результате кружок с текстом рисуется, а xml layout — нет. Т.е. на экране только кружок и больше ничего. Вопрос: какого фига?!?!?! Как сделать чтоб layout тоже нарисовало?

[code:2rmu1kbl]
public class About extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//setContentView(R.layout.about);
setContentView(new GraphicsView(this));
}

public class GraphicsView extends View
{
public GraphicsView(Context context)
{
super(context);
}
@Override
protected void onDraw(Canvas canvas)
{
Context context;
context=getContext();

View aview;

LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
aview = inflater.inflate(R.layout.about, null);

aview.draw(canvas);

Path circle = new Path();
Paint cPaint = new Paint();
cPaint.setColor(Color.LTGRAY);
circle.addCircle(150, 150, 100, Direction.CW);
canvas.drawPath(circle, cPaint);
cPaint.setColor(Color.RED);
canvas.drawTextOnPath("Some stupid text", circle, 0, 20, cPaint);
}
}
}
[/code:2rmu1kbl]

XML

[code:2rmu1kbl]
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dip" >
<TextView
android:id="@+id/about_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/about_text" />
</ScrollView>
[/code:2rmu1kbl]

Комментариев нет

  1. [url=http://developer.android.com/reference/android/widget/FrameLayout.html:3ryeshez]FrameLayout[/url:3ryeshez]:

    [code:3ryeshez]
    public class About extends Activity
    {
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.about);

    GraphicsView drawing = new GraphicsView(this);

    FrameLayout container = (FrameLayout) findViewById(R.id.container);
    container.addView(drawing);
    }

    public class GraphicsView extends View
    {
    public GraphicsView(Context context)
    {
    super(context);
    }
    @Override
    protected void onDraw(Canvas canvas)
    {
    Path circle = new Path();
    Paint cPaint = new Paint();
    cPaint.setColor(Color.LTGRAY);
    circle.addCircle(150, 150, 100, Direction.CW);
    canvas.drawPath(circle, cPaint);
    cPaint.setColor(Color.RED);
    canvas.drawTextOnPath("Some stupid text", circle, 0, 20, cPaint);
    }
    }
    }[/code:3ryeshez]

    [code:3ryeshez]<?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dip"
    android:id="@+id/container">
    <TextView
    android:id="@+id/about_content"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/about_text" />
    </FrameLayout>[/code:3ryeshez]

    PS — Вы форум не перепутали? :D

  2. Murlokotam — спасибо большое.

    ПС А какой форум более правильный? Я запостил на [url=http://stackoverflow.com/questions/7923285/cannot-render-an-xml-layout-with-layoutinfalter-what-im-doing-wrong:22btycjw]stackoverflow[/url:22btycjw] и сюда — здесь ответ уже есть, а там — нет. Вот я и думаю, что не ошибся форумом ;)

  3. Да не за что ) Мне было интересно посмотреть.

    Я пользуюсь стековерфлоу. Там, кстати, есть ваш ответ: [url:27b8pe4k]http://stackoverflow.com/questions/5262425/how-to-draw-on-top-of-a-layout[/url:27b8pe4k].

  4. [quote="Murlokotam":1b9rcvtu]Да не за что ) Мне было интересно посмотреть.

    Я пользуюсь стековерфлоу. Там, кстати, есть ваш ответ: [url:1b9rcvtu]http://stackoverflow.com/questions/5262425/how-to-draw-on-top-of-a-layout[/url:1b9rcvtu].[/quote:1b9rcvtu]там только кусочек решения, я это видел, но не понял как это сделать. Я андроидом и джавой только первый день занимаюсь :) мне пока желательно видеть полные примеры :) поэтому я и запостил все целиком.

  5. [quote="alxlabs":3i7glhj4]Кстати, забыл спросить — а почему с инфлейтером не вышло? Что не так?[/quote:3i7glhj4]Ответили на stackoverflow

    aview.measure(…, …);
    aview.layout(…, …, …, …);

    тоже ниче. Хорошая идея что не нужно инфлейтить в onDraw

Ответить