Пользовательский компонент Android ничего не показывает после раздувания - PullRequest
0 голосов
/ 12 июля 2011

Попытка создать пользовательский компонент, который получает свой макет из файла XML (box.xml).Я прошел несколько уроков, но просто не могу ничего показать.Ниже приведены конструкторы для моего пользовательского компонента, и код выполняется без ошибок.

public class MyView extends LinearLayout {
    //Constructor required for inflation from resource file
    public MyView(Context context, AttributeSet attrs) {
        super(context, attrs);        
        LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View view=layoutInflater.inflate (R.layout.box, this);                        
        Log.d("CONSTRUCTOR 2", "TESTER");        
    }
}

Я добавляю компонент в макет с помощью этого:

<com.mysample.MyView android:layout_width="50dp" android:layout_height="38dp" android:background="#FF000000" />

Черный блок действительно появляетсяна экране, но не с макетом XML-файла, которым я его раздуваю.

1 Ответ

2 голосов
/ 12 июля 2011

Вам нужно будет добавить созданный вид в линейный макет.

    public MyView(Context context, AttributeSet attrs) {
        super(context, attrs);
        View view = inflate(context, R.layout.box, null);
        addView(view);
    }

Это должно работать. Кстати, вы видите Log в вашем Logcat?

Вот box.xml (пример один). Вам нужно использовать полное имя класса MyView везде, где вы хотите его использовать.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<com.beanie.samples.drawing.MyView
android:id="@+id/whiteboardView1" android:layout_width="fill_parent"
android:layout_height="fill_parent"></com.beanie.samples.drawing.MyView>
</LinearLayout>

Проверьте пример проекта здесь .

...