2012-05-15 16 views
15

Ich habe ein LinearLayout mit einigen anderen LinearLayouts innerhalb. Die Kinder-Layouts haben einen Hintergrundselektor. Ich muss die Farbe des übergeordneten Layouts auch ändern, wenn ein Kind gedrückt wird. Ich habe auch einen Hintergrundselektor für den Eltern festgelegt, aber es wird nur ausgelöst, wenn außerhalb von Kindern geklickt wird.Android: Machen Eltern Eltern-Auslöser bei der Auswahl Kind

Wie kann ich dies vermeiden?

Danke!

Antwort

39

Versuchen Sie, diese an das Layout Hinzufügen von Attributen für das übergeordnete Linearlayout:

android:addStatesFromChildren="true" 

Alternativ Aufruf im Code:

parentLayout.setAddStatesFromChildren(true); 

In jedem Fall sicher sein, dass das Kind Layout tut nicht Setzen Sie das Attribut android:duplicateParentState (und rufen Sie nicht setDuplicateParentState(true) auf) oder Sie erhalten eine Ausnahme zur Laufzeit, wenn das System die zyklische Abhängigkeit erkennt.

+0

Wie würden Sie das Gegenteil tun: Auslöser des Kindes beim Berühren des Containers auslösen? –

+0

@androiddeveloper - Sie könnten 'android: duplicateParentState' im Kind verwenden. Das Kind würde dann seinen Eltern zeichnenden Zustand anstelle seines eigenen verwenden. Der Elternteil müsste dann anklickbar sein, auswählbar sein oder was immer Sie für das Kind brauchen. –

+0

Ich verstehe. Ist es möglich den Selektor oben zu setzen? Gibt es auch eine andere Lösung für ListView-Elemente (wo jedes Element ein Layout mit einer Ansicht ist, wie ich hier geschrieben habe)? –