Cómo detectar el evento táctil fuera del cajón de navegación
He implementado el cajón de navegación de Android en mi aplicación. Soy capaz de abrir / cerrar el cajón cuando el usuario toca el lado exterior del cajón de navegación. ¿Puede alguno de ustedes ayudarme a detectar el evento de toque / clic cuando el usuario toque / haga clic en el lado del cajón de navegación. Necesito realizar alguna funcionalidad en ese evento. Por favor, compruebe la captura de pantalla adjunta. Cualquier ayuda será apreciada.
- La barra de título ocultada de Android vuelve
- ¿Cómo implementar trackbar como esta imagen - Android?
- El botón Atrás de la barra de herramientas no funciona
- Comportamiento incorrecto de los atributos de la gravedad de las vistas secundarias de la nueva barra de herramientas Android
- Cambiar el icono del cajón de navegación en la barra de acción de Android
- TableLayout ScrollView Vertical y Horizontal
- El botón de inicio de la barra de herramientas de Android no aparece
- Ocultar permanentemente la barra de navegación en una actividad
- Cómo cambiar el color de fondo de la barra de estado de android
- Visualización de un icono en la barra de estado cuando se ejecuta mi tarea
- Altura de la barra de estado en Android
- ¿Por qué no puedo encontrar una referencia a la clase StatusBarManager directamente?
- El botón Inicio de la barra de herramientas no funciona si no hay ningún menú de opciones
Tienes que manejar la posición táctil en el método dispatchTouchEvent()
. Más información sobre la jerarquía táctil aquí
@Override public boolean dispatchTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_UP) { if (mDrawerLayout.isDrawerOpen(mRightDrawerListView)) { View content = findViewById(R.id.right_drawer); int[] contentLocation = new int[2]; content.getLocationOnScreen(contentLocation); Rect rect = new Rect(contentLocation[0], contentLocation[1], contentLocation[0] + content.getWidth(), contentLocation[1] + content.getHeight()); View toolbarView = findViewById(R.id.toolbar); int[] toolbarLocation = new int[2]; toolbarView.getLocationOnScreen(toolbarLocation); Rect toolbarViewRect = new Rect(toolbarLocation[0], toolbarLocation[1], toolbarLocation[0] + toolbarView.getWidth(), toolbarLocation[1] + toolbarView.getHeight()); if (!(rect.contains((int) event.getX(), (int) event.getY())) && !toolbarViewRect.contains((int) event.getX(), (int) event.getY())) { isOutSideClicked = true; } else { isOutSideClicked = false; } } else { return super.dispatchTouchEvent(event); } } else if (event.getAction() == MotionEvent.ACTION_DOWN && isOutSideClicked) { isOutSideClicked = false; return super.dispatchTouchEvent(event); } else if (event.getAction() == MotionEvent.ACTION_MOVE && isOutSideClicked) { return super.dispatchTouchEvent(event); } if (isOutSideClicked) { //make http call/db request Toast.makeText(this, "Hello..", Toast.LENGTH_SHORT).show(); } return super.dispatchTouchEvent(event); }
Puede utilizar onDrawerClosed
Cuando toca fuera de la pantalla
onDrawerClosed
llamará después de cerrar el cajón de navegación
public void onDrawerClosed(View view) { super.onDrawerClosed(view); //do here }
- ¿Qué es diferente entre setColorSchemeColors (int … colors) y setColorSchemeResources (int … colorResIds) y setColorScheme (int … colores)?
- Android Studio 64-bit ERROR: Linux de 32 bits Los binarios del emulador de Android son DEPRECATED