68 votos

onClick no se activa 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 configuro clickable = true y un onclicklistener en LinearLayout, pero onClick no se activa. Si configuro el oyente onclick en 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 diseño lineal 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();
            }
        });
    }
}

115voto

Yurets Puntos 3701

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

Para hacer que se pueda hacer clic en su diseño con sus elementos secundarios, debe agregar esta opción para cada elemento secundario:

  android:clickable="false"

A continuación, haga clic en el manejo va a subir a los padres.

64voto

blackbelt Puntos 45840

para cada niño

android: duplicateParentState = "true"

24voto

elementstyle Puntos 580

Este no es su caso, pero tuve un problema similar con ViewGroup puede hacer clic. Después de una hora de buscar una solución, descubrí que configuré android:inputType en TextView dentro de mi ViewGroup que estaba bloqueando onClick() oyente (no idea de por qué)

No use android:inputType con TextView

10voto

Ahamadullah Saikat Puntos 1208

Haz que tu padre LinearLayout's android: clickable = "true"

Haga que todos los de la vista infantil de android: clickable = "false"

En Linearlayout - Elimina android: inputType = "" de TextView

4voto

nhoxbypass Puntos 2918

El android:duplicateParentState="true" hizo que mi TextView pareciera estar deshabilitado y no puede recibir el evento de clic.

Todo lo que necesita es configurar TextView clickable="false" . Por lo tanto, el evento de clic se enviará al diseño principal y TextView aún puede reaccionar al evento táctil (con efecto dominó).

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X