Как отключить представление за моим SlidingDrawer в Android?

У меня есть SlidingDrawer, который появляется из нижней части экрана и заполняет экран примерно на 80%. Несмотря на то, что представление SlidingDrawer находится в фокусе, по-прежнему можно щелкнуть по элементам, кнопкам и другим элементам в представлении, которое находится за SlidingDrawer. Когда SlidingDrawer активен / снят / в фокусе, я хочу отключить весь просмотр позади него, чтобы он не смог получить клики и касания. Есть ли хороший способ отключить весь просмотр? Я попробовал setEnable (false) и setClickable (false), но ни один из них не работает.

Помогите?

Вот способ обойти эту проблему (мне также нужно было решение) – захватить linearLayout, который содержит содержимое и добавить прослушиватель кликов. Попросите кликер-кликер отреагировать на клики (выбросить, что угодно) – и это остановит его распространение на вид под скользящим ящиком – он работает для меня – и он не блокирует другие предметы в ящике.

Я попытался установить SlidingDrawer в RelativeLayout вместо LinearLayout . И установите mySlidingDrawer.bringToFront() в методе открытия.

Поэтому я думаю, что это может быть решением.

В стороне Layout do android:clickable="true"

Для примера Следующий файл – drawer.xml

Внутри LinearLayout android:id="@+id/drawer_view" clickable="true"

 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <FrameLayout android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent"> </FrameLayout> <LinearLayout android:id="@+id/drawer_view" android:layout_width="@dimen/navigation_drawer_width" android:layout_height="match_parent" android:orientation="vertical" android:layout_gravity="start" android:clickable="true" android:background="@color/drawer_background"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="10dp" android:background="@drawable/order_list_selector" android:orientation="horizontal"> <ImageView android:layout_width="@dimen/user_image_w_h" android:layout_height="@dimen/user_image_w_h" android:scaleType="fitCenter" android:id="@+id/drawerUserImage" android:src="@drawable/ic_user_icon" android:layout_gravity="center_vertical" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:layout_gravity="center_vertical" android:orientation="vertical" android:layout_marginLeft="5dp" android:padding="5dp"> <TextView android:id="@+id/drawerUserNameTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Mansukh Ahir" android:textColor="@android:color/black" android:textSize="@dimen/font_large" /> <TextView android:id="@+id/drawerEmailIdTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="@dimen/font_very_small"/> </LinearLayout> </LinearLayout> <View android:layout_width="fill_parent" android:layout_height="1dp" android:background="@color/holo_gray_light" /> <ListView android:id="@+id/drawerListSlideMenu" android:layout_width="wrap_content" android:layout_height="fill_parent" android:choiceMode="singleChoice" android:dividerHeight="1dp" /> </LinearLayout> </android.support.v4.widget.DrawerLayout> 1 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <FrameLayout android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent"> </FrameLayout> <LinearLayout android:id="@+id/drawer_view" android:layout_width="@dimen/navigation_drawer_width" android:layout_height="match_parent" android:orientation="vertical" android:layout_gravity="start" android:clickable="true" android:background="@color/drawer_background"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="10dp" android:background="@drawable/order_list_selector" android:orientation="horizontal"> <ImageView android:layout_width="@dimen/user_image_w_h" android:layout_height="@dimen/user_image_w_h" android:scaleType="fitCenter" android:id="@+id/drawerUserImage" android:src="@drawable/ic_user_icon" android:layout_gravity="center_vertical" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:layout_gravity="center_vertical" android:orientation="vertical" android:layout_marginLeft="5dp" android:padding="5dp"> <TextView android:id="@+id/drawerUserNameTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Mansukh Ahir" android:textColor="@android:color/black" android:textSize="@dimen/font_large" /> <TextView android:id="@+id/drawerEmailIdTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="@dimen/font_very_small"/> </LinearLayout> </LinearLayout> <View android:layout_width="fill_parent" android:layout_height="1dp" android:background="@color/holo_gray_light" /> <ListView android:id="@+id/drawerListSlideMenu" android:layout_width="wrap_content" android:layout_height="fill_parent" android:choiceMode="singleChoice" android:dividerHeight="1dp" /> </LinearLayout> </android.support.v4.widget.DrawerLayout> 

Ответ Джо не сделал трюк для меня. Мой сценарий немного отличается. У меня есть FrameLayout с двумя детьми. Только один из детей должен быть «активным» в данный момент, а во втором – первым, который больше не должен обрабатывать какие-либо данные. Мое решение:

  public static void changeVGstate(ViewGroup current, boolean enable) { current.setFocusable(enable); current.setClickable(enable); current.setEnabled(enable); for (int i = 0; i < current.getChildCount(); i++) { View v = current.getChildAt(i); if (v instanceof ViewGroup) changeVGstate((ViewGroup)v, enable); else { v.setFocusable(enable); v.setClickable(enable); v.setEnabled(enable); } } } 

Наслаждайтесь!

Я не знаю, будет ли это работать, но стоит попробовать. Call setDescendantFocusability (ViewGroup.FOCUS_BLOCK_DESCENDANTS) на вашем контейнере View (тот, который скользящий выдвижной ящик скользит).