充气后,Android自定义组件不显示任何内容

时间:2011-07-12 08:45:10

标签: android components android-inflate

尝试创建一个自定义组件,从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 个答案:

答案 0 :(得分:2)

您需要将创建的视图添加到线性布局中。

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

这应该有效。您是否看到Log Log in 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>

选中sample project here