OnClick no activado en LinearLayout con el niño

Tengo un LinearLayout personalizado con un niño TextView más pequeño. Me gustaría poder hacer clic en el área no cubierta por TextView, así que establezco clickable = true y un onclicklistener a LinearLayout, pero onClick no se activa. Si configuro el listener onclick en el TextView funciona como se esperaba …

¿Alguien puede ayudar?

Ar_item.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/ar_item" android:layout_width="202dp" android:layout_height="62dp" android:background="@drawable/bg_item_ar" android:clickable="true"> <TextView android:id="@+id/ar_item_txt" android:layout_width="164dp" android:layout_height="fill_parent" android:paddingBottom="8dp" android:paddingLeft="8dp" android:paddingTop="8dp" android:paddingRight="6dp" android:gravity="center" android:background="#50000000" /> </LinearLayout> 

Mi LinearLayout personalizado

 public class ARView extends LinearLayout { public ARView(final Context context, String name, String id) { super(context); getLayoutInflater().inflate(R.layout.ar_item, this ,true); LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); inflater.inflate(R.layout.ar_item, null); TextView textView = (TextView) findViewById(R.id.ar_item_txt); textView.setText(name); setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Toast t = Toast.makeText(context, "hey!", Toast.LENGTH_SHORT); t.show(); } }); } } 

Para cada niño

Android: duplicateParentState = "true"

android:duplicateParentState="true" no me ayudó.

Para hacer que su diseño se haga clic con sus hijos, debe agregar esta opción para cada niño :

  android:clickable="false" 

A continuación, el manejo de los clics subirá al padre .

Este no es tu caso, pero tuve un problema similar con ViewGroup . Después de una hora de buscar una solución descubrió que establecí android:inputType a TextView dentro de mi ViewGroup que estaba bloqueando onClick() oyente (no idea de por qué)

No utilice android:inputType con TextView

No está utilizando su vista personalizada; Está utilizando un LinearLayout estándar. Su etiqueta XML debe ser:

 <com.yourcode.ARView ...> ... </com.yourcode.ARView> 

Su altura de TextView cubre todo el padre (todo el diseño) para que pueda hacer clic en el espacio vacío pero no en el diseño. Intenta usar wrap_content para android: layout_height para tu TextView. Establezca también el oyente de clics para el diseño.

Una cosa para asegurarse de es que otra vista no está en la parte superior de la vista que está intentando hacer clic. Esto es especialmente común en FrameLayouts (donde puede cubrirse su LinearLayout secundario) o con Disposiciones relativas que podría haberse olvidado de actualizar esta línea:

 android:layout_below="@id/shouldBeTheIdOfTheViewCurrentlyBeingCovered" 

De modo que las vistas no llenen el mismo espacio.

El problema puede ser de la vista de texto que tiene android:layout_height="fill_parent" en su diseño. Si eso no soluciona el problema, el problema puede ser el evento onClick (). El diseño lineal no puede llamar nunca onClick () ya que es un diseño. Intente reemplazar el detector de eventos onTouch () en su lugar.

Si las vistas en cuestión son TextView , es posible que deba TextView como focusable="false" para que el primer clic no se use centrándose en la vista de texto.

Agregue los siguientes atributos al linealLineout Todos los eventos Click que no sean manejados por las vistas secundarias serán pasados ​​automáticamente a LinearLayout.

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" ... android:focusable="true" android:clickable="true"> <child/> <child/> </LinearLayout> 

El android:duplicateParentState="true" hizo que mi TextView se vea como deshabilitado, y no puede recibir el evento click.

Todo lo que necesita se establece el TextView clickable="false" . Por lo tanto, el evento de clic se enviará a la disposición de los padres, y el TextView todavía puede reaccionar al evento táctil (con efecto ripple).

  • Cómo capturar el evento onclick en disabled EditText en la aplicación de Android
  • Cambiar el fondo ListView - comportamiento extraño
  • Interceptación de clics desde subview en Android
  • Vista no se puede resolver a un tipo
  • ¿Diferencia entre el evento OnClick () y OnClickListener?
  • ¿Cómo pasar el evento onClick a su padre en Android?
  • ¿Una mejor manera de hacer clic en OnClick para los campos EditText?
  • Cómo configurar onclick listener para un botón en un fragmento en android
  • En EditText, aparece un diálogo al hacer clic en un subconjunto específico de texto
  • Android MediaPlayer Singleton
  • Cómo configurar un spinner onClickListener () en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.