具有自定义View元素的自定义LinearLayout不显示任何内容

时间:2012-12-15 16:24:25

标签: android android-layout

我有一个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>

我错过了什么吗? 任何帮助表示赞赏!

2 个答案:

答案 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并且不以某种方式改变它的行为,为什么要扩展它呢?