¿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).

  • Android: superposición en la ventana sobre las actividades de una tarea
  • Vista personalizada de Android onMease onDraw lifecycle
  • SearchView es nulo Android
  • Cómo obtener la vista anterior o siguiente
  • ¿Cómo puedo recuperar el botón de trabajo cuando searchview en Android
  • Efecto del carrusel de Android con diseños
  • Retrasar la llamada a onQueryTextChange () en SearchView.OnQueryTextListener con SearchView
  • Guardar hardware acelerado android lienzo como mapa de bits
  • Android DataBinding dónde obtener el contexto?
  • ¿Cómo usar la aleta de vista con tres diseños?
  • Android: Obtiene el elemento listview del botón que se hace clic en la vista de lista personalizada
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.