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(); } }); } } 

10 Solutions collect form web for “OnClick no activado en LinearLayout con el niño”

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).

  • Onlclick oyente no está funcionando correctamente ..?
  • Cajón de navegación Elementos que no registran el evento de clic
  • Método onClick no se llama en Android
  • Interceptación de clics desde subview en Android
  • OnItemClickListener usando ArrayAdapter para ListView
  • Realizar el botón Acción en Haga clic en Notificación personalizada: Android
  • ¿Por qué no AsyncTasks siempre funcionan dentro de un onClickListener?
  • Iniciar nueva actividad desde ListFragment utilizando onListItemClick ()
  • Phonegap 2.4.0 con Android 4.2 - comportamiento de doble clic extraño
  • Android: Cambiar el fondo del botón en ListView Row con onClick
  • ¿Por qué OnClickListener en un ViewHolder no funciona?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.