Android: comment propager l'événement click aux enfants LinearLayout et modifier leur drawable

Je voudrais créer un linéaire de la mise en page qui se comporteraient de la même façon à ImageButton.

<LinearLayout
    android:id="@+id/container"
    style="?WidgetHomeIconContainer">            

    <ImageView
        android:id="@+id/icon"
        style="?WidgetHomeIcon" />

    <TextView
        android:id="@+id/title"
        style="?WidgetHomeLabel"             
        android:text="@string/title"
        android:textAppearance="?attr/TextHomeLabel" />
</LinearLayout>

Dans les styles de ImageView, TextView et LinearLayout, j'ai mis un sélecteurs pour tous les états.

Maintenant:

  • quand je clique sur ImageView (j'ai essayé aussi avec ImageButton) - il se comporte correctement et l'image est modifiée en fonction du sélecteur xml.
  • quand je clique sur LinearLayout - linéaire de la mise en page est cliqué, mais l'ImageView et TextView ne pas changer c'est drawable/apparence

Donc je voudrais faire la chose suivante. Quand je clique sur le parent LinearLayout, j'ai besoin de changer tous les childs à l'état activé.

J'ai essayé d'ajouter le code suivant à LinearLayout onClickListener à se propager le cliquez:

@Override
public void onClick(View v)
{
    LinearLayout l = (LinearLayout) v;
    for(int i = 0; i < l.getChildCount(); i++)
    {
        l.getChildAt(i).setClickable(true);
        l.getChildAt(i).performClick();
    }
}

Mais il reste reamins le même. Merci beaucoup pour toute aide.

source d'informationauteur Bhiefer