2012-05-15 14 views
15

Ho un LinearLayout con alcuni LinearLayout all'interno. I layout per bambini hanno un selettore di sfondo. Ho bisogno di cambiare il colore del layout genitore anche quando viene premuto un bambino. Ho impostato anche un selettore di sfondo per il genitore, ma si attiva solo facendo clic all'esterno di qualsiasi bambino.Android: attiva il selettore del genitore quando seleziona il figlio

Come posso evitare questo?

Grazie!

risposta

39

Prova ad aggiungere questo al layout attributi per il LinearLayout genitore:

android:addStatesFromChildren="true" 

In alternativa, nella chiamata di codice:

parentLayout.setAddStatesFromChildren(true); 

In entrambi i casi, essere sicuri che il layout del bambino Non avere il set di attributi android:duplicateParentState (e non chiamare setDuplicateParentState(true)), o si otterrà un'eccezione in fase di esecuzione quando il sistema rileva la dipendenza circolare.

+0

Come faresti il ​​contrario: attivare il selettore del bambino quando si tocca il contenitore? –

+0

@androiddeveloper - Si potrebbe usare 'android: duplicateParentState' nel figlio. Il bambino userebbe quindi il suo stato estraibile principale invece del proprio. Il genitore dovrebbe quindi essere selezionabile, selezionabile o qualsiasi altra cosa di cui il bambino ha bisogno. –

+0

Vedo. è possibile impostare il selettore in cima? Inoltre, c'è una soluzione diversa per gli oggetti listView (dove ogni elemento è un layout con una vista come ho scritto qui)? –

Problemi correlati