我有一个CustomView
课,它扩展了LinearLayout
。我还有另一个课CustomElement
,它也扩展了LinearLayout
。
当我尝试在XML中使用我的类时,没有任何显示。
这是我的班级CustomView:
private static int NUMBER_OF_ELEMENTS = 4;
public CustomView(final Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
private void init(Context context) {
// get size for each element
int width = getWidth() / NUMBER_OF_ELEMENTS;
int height = getHeight() / NUMBER_OF_ELEMENTS;
for (int i = 0; i < NUMBER_OF_ELEMENTS; i++) {
CustomElement element = new CustomElement(context);
addView(element, width, height);
}
}
这是我的班级CustomElement:
public CustomElement(final Context context) {
super(context);
m_context = context;
init(context);
}
private void init(Context context) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.custom_elem, this);
}
当我现在尝试在XML中添加CustomView
时,它没有显示任何内容。
这是我的XML代码:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_mainleft"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<com.package.views.CustomView
android:id="@+id/layout_elements"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true" />
</RelativeLayout>
我错过了什么吗? 任何帮助表示赞赏!
答案 0 :(得分:1)
我能够在Luksprog的帮助下解决问题!
问题是,我在没有调用super方法的情况下覆盖了onLayout(boolean arg0, int arg1, int arg2, int arg3, int arg4)
方法!因此它不起作用!
此时再次感谢Luksprog。
答案 1 :(得分:0)
据我所知,要创建自定义布局,您应该扩展ViewGroup,并且必须覆盖方法protected void onLayout(boolean arg0,int arg1,int arg2,int arg3,int arg4)。 在这里,您可以实现逻辑并放置customView。 如果你只是扩展LinearLayout并且不以某种方式改变它的行为,为什么要扩展它呢?