Java – disable all child views in the layout

Before publishing my question, I saw many threads related to this But none of them worked for me I have a relativelayout with many other layouts and fragments as children I want to disable all sub items of "content_view" and the content clicked by the button_ View itself I tried

contentView.setDisabled(false);

There's no way I tried, too

for (int i = 0; i < layout.getChildCount(); i++) {
    View child = layout.getChildAt(i);
    child.setEnabled(false);
}

Not even that What on earth did I do wrong? Please find mine below XML code I even tried to put my point of view above all others Even if it doesn't solve my problem

<RelativeLayout
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:id="@+id/content_view"
    android:background="#ffffff">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_below="@+id/channel_actionbar"
        android:layout_marginLeft="0dp"
        android:layout_marginTop="0dp"
        android:duplicateParentState="true">

        <FrameLayout
            android:layout_height="match_parent"
            android:layout_width="match_parent"
            android:id="@+id/body_container"
            android:layout_below="@+id/channel_actionbar"
            android:duplicateParentState="true">

            <RelativeLayout
                android:layout_height="match_parent"
                android:layout_width="match_parent"
                android:id="@+id/channelList"
                android:duplicateParentState="true">

                <com.mobile.subview.ScrollViewWithScrollListener
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:id="@+id/scrollView"
                    android:layout_alignParentTop="false"
                    android:duplicateParentState="true">

                    <RelativeLayout
                        android:orientation="vertical"
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                        android:duplicateParentState="true">

                        <FrameLayout
                            android:layout_width="fill_parent"
                            android:layout_height="fill_parent"
                            android:id="@+id/imagePlaceHolder"
                            android:duplicateParentState="true"></FrameLayout>

                        <TableLayout
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:id="@+id/channelTable"
                            android:layout_below="@+id/imagePlaceHolder"
                            android:duplicateParentState="true"></TableLayout>

                        <com.mobile.subview.CustomTextView
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:text="You do not qualify for any engagements or channels.  Please check back later."
                            app:typeface="fonts/HelveticaNeue"
                            app:customStyle="Regular"
                            android:id="@+id/noChannelsMessage"
                            android:textColor="#000"
                            android:textSize="@dimen/contentTextSize"
                            android:visibility="gone"
                            android:duplicateParentState="true"/>
                    </RelativeLayout>
                </com.mobile.subview.ScrollViewWithScrollListener>

                <com.mobile.subview.ParallaxImage
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:id="@+id/header"
                    android:adjustViewBounds="true"
                    android:layout_alignParentTop="true"
                    android:scaleType="fitStart"
                    android:visibility="invisible"
                    android:duplicateParentState="true"/>
            </RelativeLayout>

            <RelativeLayout
                android:layout_height="match_parent"
                android:layout_width="match_parent"
                android:layout_below="@+id/channel_actionbar"
                android:id="@+id/sibling_view"
                android:visibility="gone"
                android:duplicateParentState="true"></RelativeLayout>

        </FrameLayout>
    </LinearLayout>

    <RelativeLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:visibility="invisible"
        android:id="@+id/retailersContainer"
        android:layout_marginLeft="0dp"
        android:duplicateParentState="true"
        android:layout_below="@+id/channel_actionbar">

        <fragment
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:name="com.mobile.subview.List"
            android:id="@+id/retailers"
            android:duplicateParentState="true"/>

        <FrameLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_below="@+id/retailers"
            android:id="@+id/retailerClickBlocker"
            android:duplicateParentState="true"></FrameLayout>
    </RelativeLayout>

    <RelativeLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="@dimen/actionBarHeight"
        android:layout_alignParentTop="true"
        android:id="@+id/channel_actionbar"
        android:background="#F8F8F8"
        android:layout_marginLeft="0dp"
        android:duplicateParentState="true">

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/shared_navmenu_button"
            android:id="@+id/show_menu_button"
            android:layout_centerVertical="true"
            android:background="@null"
            android:scaleType="fitCenter"
            android:layout_marginLeft='5px'
            android:duplicateParentState="true"/>

        <com.mobile.subview.CustomTextView
            android:id="@+id/channel_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:textSize="@dimen/titleTextSize"
            android:textColor="#000"
            android:text="Test Title"
            app:typeface="fonts/HelveticaNeue"
            app:customStyle="Medium"
            android:visibility="gone"
            android:duplicateParentState="true"/>


        <ImageView
            android:id="@+id/logo"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:layout_centerInParent="true"
            android:src="@drawable/shared_navbar_logo2x"
            android:visibility="gone"
            android:scaleType="fitCenter"
            android:duplicateParentState="true"/>

        <com.mobile.subview.CustomButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:id="@+id/channel_done_btn"
            app:typeface="fonts/HelveticaNeue"
            app:customStyle="Regular"
            android:visibility="gone"
            android:duplicateParentState="true"/>

        <com.mobile.subview.CustomButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            app:typeface="fonts/HelveticaNeue"
            app:customStyle="Regular"
            android:id="@+id/channel_share_btn"
            android:visibility="gone" />

        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:background="#D6D6D6"
            android:id="@+id/divider"
            android:layout_alignParentBottom="true"
            android:duplicateParentState="true"/>

    </RelativeLayout>

    <View
        android:visibility="gone"
        android:id="@+id/click_preventing_view"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#66000000"
        android:clickable="false" />

</RelativeLayout>

Solution

Because your layout is very nested, you need to disable views recursively Instead of using your method, try this:

private static void disable(ViewGroup layout) {
    layout.setEnabled(false);
    for (int i = 0; i < layout.getChildCount(); i++) {
        View child = layout.getChildAt(i);
        if (child instanceof ViewGroup) {
            disable((ViewGroup) child);
        } else {
            child.setEnabled(false);
        }
    }
}

Then call:

disable(content_view);
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>