¿Cómo puedo inhabilitar una vista detrás de mi SlidingDrawer en Android?

Tengo un SlidingDrawer que aparece de la parte inferior de la pantalla y llena la pantalla alrededor del 80%. Aunque la vista de SlidingDrawer está enfocada, todavía es posible hacer clic en elementos, botones y otros elementos en la vista que se encuentra detrás del SlidingDrawer. Cuando SlidingDrawer está activo / activado / en foco, quiero desactivar toda la vista detrás de él para que no pueda recibir clics y toques. ¿Hay una buena manera de deshabilitar una vista completa? He intentado setEnable (false) y setClickable (false) pero ninguno de ellos funciona.

¿Ayuda?

He aquí una manera de sortear este problema (necesitaba una solución también) – agarrar el linearLayout que contiene el contenido y agregar un oyente de clic. Haga que el oyente del tecleo responda a los tecleos (tiro lejos, lo que) – y éste entonces lo para que se propaga a la visión debajo del cajón que resbala – trabaja para mí – y no bloquea los otros artículos en el cajón.

He intentado poner SlidingDrawer en RelativeLayout , en lugar de LinearLayout . Y set mySlidingDrawer.bringToFront() en el método de apertura.

Así que creo que esto puede ser una solución.

En Layout lateral haz android:clickable="true"

Por ejemplo El siguiente archivo es drawer.xml

Dentro de 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> 

La respuesta de Joe no me hizo el truco. Mi escenario es un poco diferente. Tengo un FrameLayout con dos hijos. Sólo uno de los niños tiene que estar 'activo' en un momento dado, y mientras el segundo está activo, el primero ya no debe procesar ninguna entrada. Mi solución:

  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); } } } 

¡Disfrutar!

No sé si esto funcionará, pero vale la pena intentarlo. Llame a setDescendantFocusability (ViewGroup.FOCUS_BLOCK_DESCENDANTS) en la vista de su contenedor (la que se desliza el cajón deslizante).

  • Cómo mostrar / ocultar submenús dentro de NavigationView android
  • ¿Cómo puedo añadir contenido personalizado en una vista de navegación
  • Animar el cambio de color de fondo de la vista en Android
  • Actividad de búsqueda que no se está iniciando al pulsar Intro
  • Cómo traer una vista al frente sin llamar bringToFront ()?
  • Cómo inflar una vista en una posición determinada?
  • ¿Es posible usar inflador de vista para inflar artículos individuales?
  • Android scrollview no se llena la vista de los padres
  • Menús dinámicos en NavigationView
  • Android: Cómo realizar cambios en la vista principal de un botón
  • SearchView edittext siempre es nulo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.