¿Cómo hacer clic en las vistas detrás de una barra de herramientas?
Tengo una barra de herramientas con un fondo transparente / traslúcido que superpone el contenido. Por lo tanto, detrás de la barra de herramientas, pueden aparecer vistas que se pueden hacer clic. El problema es que no se puede hacer clic en la barra de herramientas porque la barra de herramientas captura el evento de clic.
He intentado establecer android:clickable="false"
, android:focusable="false"
y android:focusableInTouchMode="false"
para la barra de herramientas, pero no tiene efecto. ¿Cómo puedo enviar un clic a través de la barra de herramientas a la vista subyacente?
- Barra de herramientas y NavigationDrawer
- Lollipop Barra de progreso Tinción
- Android L Previsualizar el material denominado Tabs
- Accidente de transición de elemento compartido para dispositivos Lollipop
- ¿Cómo agregar un menú al FloatingActionButton en la biblioteca de diseño de Android recientemente actualizada?
- Cómo mostrar los elementos colapsados en CoordinatorLayout mediante programación?
- Android.support.design.widget.FloatingActionButton la implantación de FAB reduce el tamaño de la imagen
- Android colorControlNormal atributos xml no funciona antes de Lollipop
- ¿Qué tamaño deben tener los iconos de Barra de Acción (Barra de herramientas) en el nuevo diseño de Material Android?
- Botón de inicio de Android en la barra de herramientas de contracción con imagen
- Cómo establecer transitionName a título de barra de herramientas?
- Compatibilidad con versiones anteriores del diseño del material: colorAccent requiere el nivel 21 de API cuando se utiliza appcompat7
- Android RecyclerView con indicador de progreso y animación
Echa un vistazo a la implementación de la Toolbar
de Toolbar
. Se come eventos táctiles , independientemente del atributo que se clickable
.
@Override public boolean onTouchEvent(MotionEvent ev) { // Toolbars always eat touch events, but should still respect the touch event dispatch // contract. If the normal View implementation doesn't want the events, we'll just silently // eat the rest of the gesture without reporting the events to the default implementation // since that's what it expects. final int action = MotionEventCompat.getActionMasked(ev); if (action == MotionEvent.ACTION_DOWN) { mEatingTouch = false; } if (!mEatingTouch) { final boolean handled = super.onTouchEvent(ev); if (action == MotionEvent.ACTION_DOWN && !handled) { mEatingTouch = true; } } if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) { mEatingTouch = false; } return true; }
La solución es extender desde la Toolbar
de Toolbar
y sobreescribir onTouchEvent
.
public class NonClickableToolbar extends Toolbar { @Override public boolean onTouchEvent(MotionEvent ev) { return false; } }
Su diseño necesita ser ajustado. No puede proporcionar vistas que se pueden hacer clic detrás de una barra de herramientas transparente / translúcida. Debe proporcionar un relleno superior igual a la altura de la barra de herramientas y / o implementar el patrón de retorno rápido para la barra de herramientas.
- Cómo conciliar la diferencia en la relación de aspecto entre el tamaño de vista previa de la cámara y el tamaño de la imagen
- Decodificador Skia no puede descodificar el flujo remoto