¿Cómo pasar el evento onClick de una vista a su principal en Android?

Tengo un TextView en un diseño cuyo fondo es un Selector. Y el texto de TextView está configurado como Transmitido desde HTML. Luego configuro TextView con LinkMovementMethod.

Ahora, cuando toco en TextView, el evento click no se envía a su diseño principal para activar el selector.

¿Cómo se debe resolver esto?

Creo que debes usar uno de esos métodos para poder interceptar el evento antes de que se envíe a los componentes apropiados:

Activity.dispatchTouchEvent(MotionEvent) : permite que su actividad intercepte todos los eventos táctiles antes de enviarlos a la ventana.

ViewGroup.onInterceptTouchEvent(MotionEvent) : permite a un grupo de visualización ver eventos a medida que se envían a vistas secundarias.

ViewParent.requestDisallowInterceptTouchEvent(boolean) : ViewParent.requestDisallowInterceptTouchEvent(boolean) a una Vista principal para indicar que no debe interceptar eventos táctiles con onInterceptTouchEvent (MotionEvent).

Más información aquí .

Espero que ayude.

Declare que su TextView no puede hacer clic / TextView usando android:clickable="false" y android:focusable="false" o v.setClickable(false) y v.setFocusable(false) . Los eventos de clic deben enviarse al padre de TextView ahora.

Nota:

Para lograr esto , debe agregar clic a su parent directo. o establece android:clickable="false" y android:focusable="false" a su padre directo para pasar al oyente a otro padre .

En algún momento solo esto ayuda:

 View child = parent.findViewById(R.id.btnMoreText); child.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { View parent = (View) v.getParent(); parent.performClick(); } }); 

Otra variante, no siempre funciona:

 child.setOnClickListener(null); 

Poner

 android:duplicateParentState="true" 

en el niño, las vistas obtienen su estado dibujable (enfocado, presionado, etc.) desde su padre directo en lugar de desde sí mismo. puedes establecer onclick para parent y llamar a child clicked

Si su TextView crea problemas de clics, entonces elimine android:inputType="" de su archivo xml.

Si desea tanto OnTouch como OnClick listener para ver padres e hijos, use el siguiente truco:

  1. El usuario ScrollView como vista principal y el interior que coloca su vista secundaria dentro de Relative / LinearLayout.

  2. Make Parent ScrollView android:fillViewport="true" para que View no se desplace.

  3. Luego configure OnTouch listener para parent y OnClick listener para Child views. Y disfruta de ambas devoluciones de llamada del oyente.