Народ — у меня проста задачка: нужно поверх 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]
[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 — Вы форум не перепутали?
Murlokotam — спасибо большое.
ПС А какой форум более правильный? Я запостил на [url=http://stackoverflow.com/questions/7923285/cannot-render-an-xml-layout-with-layoutinfalter-what-im-doing-wrong:22btycjw]stackoverflow[/url:22btycjw] и сюда — здесь ответ уже есть, а там — нет. Вот я и думаю, что не ошибся форумом
Да не за что ) Мне было интересно посмотреть.
Я пользуюсь стековерфлоу. Там, кстати, есть ваш ответ: [url:27b8pe4k]http://stackoverflow.com/questions/5262425/how-to-draw-on-top-of-a-layout[/url:27b8pe4k].
[quote="Murlokotam":1b9rcvtu]Да не за что ) Мне было интересно посмотреть.
Я пользуюсь стековерфлоу. Там, кстати, есть ваш ответ: [url:1b9rcvtu]http://stackoverflow.com/questions/5262425/how-to-draw-on-top-of-a-layout[/url:1b9rcvtu].[/quote:1b9rcvtu]там только кусочек решения, я это видел, но не понял как это сделать. Я андроидом и джавой только первый день занимаюсь
мне пока желательно видеть полные примеры
поэтому я и запостил все целиком.
Кстати, забыл спросить — а почему с инфлейтером не вышло? Что не так?
[quote="alxlabs":3i7glhj4]Кстати, забыл спросить — а почему с инфлейтером не вышло? Что не так?[/quote:3i7glhj4]Ответили на stackoverflow
aview.measure(…, …);
aview.layout(…, …, …, …);
тоже ниче. Хорошая идея что не нужно инфлейтить в onDraw