尝试创建一个自定义组件,从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文件的布局中。
答案 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>