studio event buttons android

android - event - onClickListener en un LinearLayout



java android onclicklistener (5)

Descubrí que ese setClickable (verdadero) aún causaría que los clics fueran a los hijos de linearlayout. Descubrí que para que LinearLayout capturara el toque en lugar de los niños, tuve que anular el método dispatchTouchEvent, así que creé una subclase de LinearLayout solo para este propósito. Aunque parece una solución fea.

Tengo un pequeño problema con una funcionalidad que me gustaría implementar.

Tengo un LinearLayout , que contiene 2 TextViews . Me gustaría establecer un onClickListener en él, para que se comporte como un elemento en un ListView .

He intentado alguna posible implementación de esto, y lo puse funcionando usando el atributo xml android:onClick of the LinearLayout .

Como quiero que la aplicación reaccione visualmente a un clic en LinearLayout (como en un ListView ), pongo esto en el método de devolución de llamada del oyente:

l.setBackgroundColor(android.R.drawable.list_selector_background);

l es un objeto LinearLayout , inicializado con findViewById() ;

Me sale una aplicación que no responde cuando intento hacer clic en el diseño. Intenté reemplazar el código en el método de devolución de llamada por un mensaje de Toast, y funciona, así que supongo que el problema está en el setBackgroundColor .

¿Alguien está familiarizado con esto?

PD: lo siento, no puedo publicar más código en este momento, estoy en el trabajo.


Me di cuenta de que todos los consejos anteriores no ayudan, siempre que cualquiera de los elementos secundarios dentro de LinearLayout tenga el atributo android: textIsSelectable = "true".


Tenía el mismo problema, he estado intentando durante una hora todas las respuestas en SO, pero ninguna funcionó.

Luego me di cuenta de que solo tenía que promover mi LinearLayout al final del diseño , ya que otras vistas lo bloqueaban, y luego funcionó, sin agregar CUALQUIER atributo especial al diseño .

Poniéndolo aquí en caso de que pueda ayudar a alguien algún día.


debe establecer el enfoque de LinearLayout en verdadero y establecer el enfoque de todas las vistas de los niños en falso, no use el android: clickable = "true", pero no puede ver el efecto del clic del trazado de línea. Por cierto, la mejor manera es implementar la API onTouchEvent.


LinearLayout configurar el atributo LinearLayout android:clickable="true" en el archivo de diseño xml o setClickable(true) en el código de actividad java.