Creo que necesita usar uno de esos métodos para poder interceptar el evento antes de que se envíe a los componentes apropiados:
Activity.dispatchTouchEvent(MotionEvent) - Esto permite que su Actividad intercepte todos los eventos táctiles antes de que se envíen a la ventana.
ViewGroup.onInterceptTouchEvent(MotionEvent) - Esto permite que un ViewGroup observe los eventos a medida que se envían a las Vistas secundarias.
ViewParent.requestDisallowInterceptTouchEvent(boolean) - Invoque esto en una Vista principal para indicar que no debe interceptar eventos táctiles con onInterceptTouchEvent (MotionEvent).
Más información aquí .
Espero que ayude.
Luis Miguel Serrano
fuente
@Override public boolean dispatchTouchEvent(MotionEvent ev) { ... }Declarar su
TextViewno se puede hacer clic / enfocable mediante el usoandroid:clickable="false"yandroid:focusable="false"ov.setClickable(false)yv.setFocusable(false). Los eventos de clic deben enviarse alTextViewpadre de 'ahora.Nota:
Para lograr esto , debe agregar clic a su directo
parent. o establecerandroid:clickable="false"yandroid:focusable="false"a su padre directo para pasar el oyente a otro padre .fuente
TextView#setOnClickListener()en elTextView, se puede hacer clic, incluso si se declara comoandroid:clickable="false", e incluso si elClickListenerestá configurado ennull(setOnclickListener(null))android:inputTypeatributo, consumirá silenciosamente los eventos de clic incluso con clickable: false y focusable: false; en mi caso estaba ambientado en un estilo y me costó 30 minutos descubrir la causa.A veces, solo esto ayuda:
Otra variante, no siempre funciona:
fuente
CardViewcomo vista secundaria, ya queCardViewparece ignorarclickable="false"yfocusable="false". Sin embargo, usarsetOnTouchListenery llamaronTouchEvental padre le permite al padre mostrar retroalimentación táctil (por ejemplo, efecto dominó).Poner
en child, las vistas obtienen su estado dibujable (enfocado, presionado, etc.) de su padre directo en lugar de sí mismo. puede configurar onclick para los padres y llamar al niño cuando se hace clic
fuente
Si
TextViewcrea problemas de clic, elimíneloandroid:inputType=""de su archivo xml.fuente
android:inputType="none"Esta respuesta es similar a la respuesta de Alexander Ukhov , excepto que usa eventos táctiles en lugar de eventos de clic. Estos eventos permiten que el padre muestre los estados de presión adecuados (por ejemplo, efecto dominó). Esta respuesta también está en Kotlin en lugar de Java.
fuente
Si quieres tanto
OnTouchyOnClickescucha para padres e hijos vista tanto, por favor utilice a continuación truco:El usuario ScrollView como una vista principal y dentro de eso colocó su vista secundaria dentro de Relative / LinearLayout.
Haga que Parent ScrollView
android:fillViewport="true"no se desplace por View.A continuación, configure el
OnTouchoyente como padre y elOnClickoyente como vistas secundarias. Y disfruta de las devoluciones de llamada de ambos oyentes.fuente