扩展视图组给出了子计数0?

时间:2014-06-19 09:33:35

标签: android android-custom-view

我正在扩展框架布局

并且在构造函数中(在从xml加载视图之后)我调用getChildCount()

我得到0.如何解决这个问题?

public class DisabledFrameLayout extends FrameLayout {


    public DisabledFrameLayout(Context context) {
        super(context);
        init(context, null,0);
    }

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

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

    private void init(Context context, AttributeSet attrs, int defStyle) {

        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.DisabledFrameLayout, 0, 0);


        if(a.hasValue(R.styleable.DisabledFrameLayout_disable_descendants)) {
            boolean disable = a.getBoolean(R.styleable.DisabledFrameLayout_disable_descendants, false);
            if(disable) {
                disableDescendants(this);
            }
        }
        a.recycle();
    }


    private void disableDescendants(ViewGroup v) {
        for (int i=0; i<v.getChildCount();i++) {
            if(v.getChildAt(i) instanceof ViewGroup) {
                disableDescendants((ViewGroup)v.getChildAt(i));
            }

            v.setEnabled(false);
            v.setFocusable(false);
            v.setFocusableInTouchMode(false);
        }
    }


}

XML

<com.lenabru.DisabledFrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:disable_descendants="true"
             >

            <include
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_gravity="center"
                layout="@layout/fragment_p" />
        </com.lenabru.DisabledFrameLayout>

1 个答案:

答案 0 :(得分:3)

在构建FrameLayout的状态下,孩子仍未完全依附于视图。因此,调用getChildCount()将返回0.

如果要迭代子视图并更新它们,请在onLayout()onMeasure()内进行。

参考文献: