0

尝试创建一个从 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 文件的布局中。

4

1 回答 1

2

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

    公共MyView(上下文上下文,AttributeSet attrs){
        超级(上下文,属性);
        View view = inflate(context, R.layout.box, null);
        添加视图(视图);
    }

这应该有效。顺便说一句,您看到 Logcat 中的 Log 了吗?

这是 box.xml(示例一)。您需要在要使用的任何地方使用 MyView 的完全限定类名。

<?xml 版本="1.0" 编码="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>
</线性布局>

在此处查看此示例项目

于 2011-07-12T08:50:31.160 回答