2012-04-16 7 views
12

Ich möchte ein lineares Layout erstellen, die ähnlich wie ImageButton verhalten würde.Android: Wie Click-Ereignis auf LinearLayout Childs zu propagieren und ändern Sie ihre Zeichen

In Stilen von ImageView, TextView und LinearLayout, setze ich einen Selektoren für alle Zustände.

Jetzt:

  • , wenn ich auf Image klicken (ich versuchte es auch mit Image) - es verhält sich korrekt und das Bild geändert wird, um die Wähler xml nach.
  • , wenn ich auf Linearlayout klicken - das lineare Layout angeklickt wird, aber die die Image und Textview nicht ändern es ziehbar/Aussehen ist

So würde ich folgendes tun. Wenn ich auf Parent LinearLayout klicke, muss ich alle Childs in gedrückten Zustand ändern.

Ich versuchte folgenden Code Linearlayout OnClickListener hinzuzufügen, den Klick zu propagieren:

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

Aber es noch reamins gleich. Vielen Dank für jede Hilfe.

Antwort

0

Nach dem gleichen Problem einige Monate später, fand ich diese Lösung:

private void setOnClickListeners() { 
    super.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      onClick(v); 
     } 
    }); 
    for (int index = 0; index < super.getChildCount(); index++) { 
     View view = super.getChildAt(index); 
     view.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       onClick(v); 
      } 
     }); 
    } 
} 

protected void onClick(View v) { 
    // something to do here... 
} 
2

nur nicht für jeden machen Kind:

android:duplicateParentState="true" 

Aber auch zusätzlich:

android:clickable="false" 

Dies wird unerwartetes Verhalten verhindern (oder Lösung einfach nicht funktioniert), wenn klickbare Kind Ansichten verwendet werden.

SO Source

Verwandte Themen