2012-05-15 11 views
15

Tengo un LinearLayout con algunos otros LinearLayouts dentro. Los diseños de los niños tienen un selector de fondo establecido. También necesito cambiar el color del diseño principal cuando se presiona un elemento secundario. También configuré un selector de fondo para el elemento principal, pero solo se activa al hacer clic fuera de los elementos secundarios.Android: haga que el selector de padres se active cuando seleccione

¿Cómo puedo evitar esto?

Gracias!

Respuesta

39

Trate de añadir esto a la disposición de los atributos para el LinearLayout padres:

android:addStatesFromChildren="true" 

Por otra parte, en el llamado código:

parentLayout.setAddStatesFromChildren(true); 

En cualquier caso, asegúrese de que los diseños de los niños hacen no tener el atributo android:duplicateParentState establecido (y no llamar al setDuplicateParentState(true)), o obtendrá una excepción en tiempo de ejecución cuando el sistema detecte la dependencia circular.

+0

¿Cómo harías lo contrario: disparas el selector del niño cuando tocas el contenedor? –

+0

@androiddeveloper - Podría usar 'android: duplicateParentState' en el niño. El niño usaría entonces el estado dibujable de sus padres en lugar del propio. El padre tendría que poder hacer clic, seleccionar o lo que necesitara que sea el niño. –

+0

Ya veo. ¿Es posible configurar el selector en la parte superior? Además, ¿existe una solución diferente para los artículos de ListView (donde cada elemento es un diseño con una vista como he escrito aquí)? –

Cuestiones relacionadas