Android SlidingDrawer no deshabilita los botones 'debajo' del cajón
Este es el escenario: Tengo un botón B, y una corredera que cuando se saca cubre toda la pantalla. Cuando retiro la pantalla y toco la pantalla donde B estaba visible, su acción aún se ejecuta.
¿Cómo puedo evitar esto?
- Porcentaje abierto de SlidingDrawer en Android
- El cajón de navegación no funciona cuando startActivity se utiliza en el primer caso de selectItem
- La vista de desplazamiento no se desplaza dentro del cajón deslizante
- LinearLayout @ 422725b0 no es un cajón deslizante
- Android: SlidingDrawer desaparece bajo SurfaceView
Encontré este hilo describiendo el mismo problema, pero no se aceptó ninguna respuesta y las que se dieron no conseguí trabajar.
ACTUALIZACIÓN: Tengo un archivo denominado Report.java, con un archivo report.xml correspondiente como se ve a continuación.
<SlidingDrawer android:id="@+id/drawer" android:layout_width="fill_parent" android:layout_height="wrap_content" android:handle="@+id/reportSlideButton" android:content="@+id/reportContent" android:orientation="horizontal"> <LinearLayout android:id="@id/reportContent" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:layout_weight="1" android:padding="10dp" android:background="@color/bg_color"> <TextView android:id="@+id/garbageTypeTextView" android:layout_height="wrap_content" android:textColor="@color/text" android:layout_width="fill_parent" android:text="@string/garbageTypeString" android:textStyle="bold"/> <Spinner android:id="@+id/garbageTypeSpinner" android:layout_height="wrap_content" android:layout_width="fill_parent"/> <TextView android:id="@+id/textViewForDateTitle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/dateString" android:textColor="@color/text" android:textStyle="bold" /> <TextView android:id="@+id/dateTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/text" /> <TextView android:id="@+id/textViewForAddressTitle" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="@string/addressString" android:textColor="@color/text" android:textStyle="bold" /> <TextView android:id="@+id/addressTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/text" /> <TextView android:id="@+id/textViewForPositionTitle" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="@string/positionString" android:textColor="@color/text" android:textStyle="bold" /> <TextView android:id="@+id/positionTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/text" /> <TextView android:id="@+id/textViewForCommentTitle" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="@string/commentString" android:textColor="@color/text" android:textStyle="bold" /> <EditText android:id="@+id/commentTextBox" android:layout_height="fill_parent" android:layout_width="fill_parent" android:layout_weight="1"/> <Button android:id="@+id/sendCrapportButton" android:onClick="sendCrapport" android:layout_height="wrap_content" android:layout_width="fill_parent" android:text="Skicka rapport" /> </LinearLayout> <Button android:id="@id/reportSlideButton" android:layout_width="40dp" android:layout_height="40dp" android:text=">"/> </SlidingDrawer>
Adición de componentes:
protected void addComponents() { takePictureButton = (ImageButton) findViewById(R.id.takePictureButton); slidingDrawer = (SlidingDrawer) findViewById(R.id.drawer); }
- Android Drawer Layout no puede encontrar R.layout.drawer_list
- Reducción de la velocidad del cajón deslizante
- El cajón corredizo parece semicircular
- Android ¿Es posible tener múltiples SlidingDrawer
- Color de fondo del cajón deslizante
- ¿Cómo se puede animar un SlidingDrawer?
- Cambiar la forma en que SlidingDrawer responde al trackball o al cursor
- ¿El mismo SlidingDrawer en todas las actividades?
Usted podría agregar android: clickable = "true" a su etiqueta del contenido del deslizador (id reportContent). De esa manera no hará "clic". Sus botones dentro de la corredera todavía debe trabajar .. espero;)
Solo añadiendo a la respuesta de @ f-horn:
Si incluye un diseño de un archivo diferente (como yo) para el SlidingDrawer, debe colocar el 'android: clickable = "true"' en el archivo de diseño incluido, no en la etiqueta de inclusión. Permítanme más bien usar un ejemplo:
Esto no funcionará:
Main.xml
<SlidingDrawer android:handle="@+id/handle" android:content="@+id/content"> <ImageView android:id="@id/handle" /> <include android:id="@+id/content" layout="@layout/some_other_layout" android:clickable="true"/> </SlidingDrawer>'
Esta voluntad:
Main.xml
<SlidingDrawer android:handle="@+id/handle" android:content="@+id/content"> <ImageView android:id="@id/handle" /> <include android:id="@+id/content" layout="@layout/some_other_layout"/> </SlidingDrawer>'
Some_other_layout.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:clickable="true"> ............ <LinearLayout/>
Creo que debe agregar un oyente de tacto en el control deslizante y devolver verdadero en él. De esta forma, le dirá al sistema que se ha consumido el evento táctil.
Hey i pegado con este error durante días por lo que es la respuesta simple
Usted ha creado ya en su clase el slidingdrawer lo que; Sólo implemente en su clase, OnDrawerOpenListener, onDrawerCloseListener
Luego deje que la clase agregue los métodos no implementados y vaya al ondraweropenlistener{ slidingdrawer.setclickable(true); }
ondraweropenlistener{ slidingdrawer.setclickable(true); }
Y en el drawercloselistener{ slidingdrawer.setclickable(false); }
drawercloselistener{ slidingdrawer.setclickable(false); }
Esto se establecerá cuando el cajón se abre hará que sea clicable y evitar que haga clic en la vista trasera y cuando se cierra todo volver al valor predeterminado
Esta es la solución más simple probarlo: D
Estaba teniendo el mismo problema. Mis artículos en el cajón deslizante no fueron capaces de ganar el foco. Después de probar varias cosas diferentes, descubrí que tenía una colocada en el cajón deslizante entre la etiqueta y la disposición lineal que tenía el contenido de Layout.
Una vez que lo quite todo funciona bien.
<SlidingDrawer ....> <FrameLayout android:id="@+id/slideHandle" ... /> **MOVED** <ScrollView> **TO** <LinearLayout android:id="@+id/contentLayout" ... > <ScrollView> **HERE**
Espero que esto ayude a alguien.
En su SlidingDrawer, anule onTouch (Ver v, evento MotionEvent) y devuelva true.
La única cosa que no estoy seguro es si el marco considerará el cajón para superponer la vista incluso cuando está cerrado. Si ese es el caso, entonces debe agregar algunas comprobaciones para ver el estado del cajón, devolviendo isOpened (), lo que será cierto cuando el cajón se abre pero es falso cuando se cierra.
This is My main layout and where i introduce sliding drawer inside this. <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/Beige" android:clickable="true" android:orientation="vertical" > <Button android:id="@+id/DoneStart" android:layout_width="100dp" android:layout_height="40dp" android:textSize="14sp" /> <SlidingDrawer android:id="@+id/SlidingDrawer" android:layout_width="wrap_content" android:layout_height="100dp" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:content="@+id/contentLayout" android:handle="@+id/handle_image" android:padding="1dp" android:rotation="180" > <LinearLayout android:id="@+id/contentLayout" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="8" android:text="Hello Slider" /> </LinearLayout> </SlidingDrawer>
Muestra de mina después de la frustración de los bits donde añadir que android: clickable = "true"