Android:无法在自定义RelativeLayout中找到子项

时间:2012-04-23 12:46:56

标签: android android-layout

我扩展了RelativeLayout类,并实现了我认为需要的所有构造函数。我还在xml布局中添加了一个子项,就像我使用常规RelativeLayout一样。现在,问题是,我似乎无法访问自定义布局中的孩子!奇怪的是,我可以(在图形布局中)选择子视图,自定义布局被描述为“父”,但在尝试反过来时没有骰子。

我怎么告诉班级它实际上有孩子?代码如下!

谢谢!

private void init(Context context) {
    System.out.println(this.getChildCount()); // Always returns 0
}

public CustRLayout(Context context) {
    super(context);
    init(context);
}

public CustRLayout(Context context, AttributeSet attrs) {
    super(context, attrs);
    init(context);
}

public CustRLayout(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    init(context);
}

XML文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <app.hobi.CustRLayout android:id="@+id/cust"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical">
        <ImageView 
            android:id="@+id/childView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:contentDescription="@string/img"
            android:src="@drawable/an_image" />
    </app.hobi.CustRLayout>

    <app.hobi.SomeOtherView android:id="@+id/other"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>

</RelativeLayout>

1 个答案:

答案 0 :(得分:2)

通过addChild()稍后(在调用构造函数之后)添加子项。因此,在较晚的状态下查询childCount,例如:onMeasure()或使用ViewTreeObserver