I saw many threads related to this, before posting my question. But none worked for me. I have a RelativeLayout with many other layouts and fragments as children. I want to disable all the children of "content_view" as well as the content_view itself on a button click. I tried
contentView.setDisabled(false);
This didn't work. I've also tried
for (int i = 0; i < layout.getChildCount(); i++) {
View child = layout.getChildAt(i);
child.setEnabled(false);
}
Even this didn't work. What am I doing wrong? Please find my .xml code below. I even tried placing a view above all views. Even that didn'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>
Simply Use linearLayout. removeView(View view); It would refresh automaically.
YOUR_RELATIVE_LAYOUT. setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { // ignore all touch events return true; } }); With many examples, we have shown how to resolve the Make Layout Not Clickable Android problem.
I am able to disable all content inside linear layout using following code: LinearLayout myLayout = (LinearLayout) findViewById(R. id. linearLayout1); for ( int i = 0; i < myLayout.
Simply you can think of the real life relation between parent and child. on the hierarchy parents are toplevel and child is below.so when you come to android layout parent is container and child is the content.
Because your layouts are so heavily nested, you need to recursively disable the views. Instead of using your method, try something like 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);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With