studio - Android: cómo puedo crear un selector para Layouts(como un selector ImageButton)
imagen en boton android studio (1)
Tengo un ImageButton y un LinearLayout que envuelven ese botón, así:
<LinearLayout
android:id="@+id/homeButtonLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/p_buttons_background"
android:orientation="vertical" >
<ImageButton
android:id="@+id/homeButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10px"
android:background="@drawable/home_icon"
android:onClick="goBackToCameraScreen" />
</LinearLayout>
Pongo un fondo alrededor del ImageButton en LinearLayout , como puedes ver arriba.
Quiero poder cambiar ese fondo (es decir, el fondo de LinearLayout , no el fondo del ImageButton) cuando el usuario hace clic en ImageButton. Podría hacerlo programáticamente, pero quiero hacerlo a través de XML. Podría cambiar fácilmente el fondo del ImageButton escribiendo un selector, como este:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/button_pressed" /> <!-- pressed -->
<item android:state_focused="true"
android:drawable="@drawable/button_focused" /> <!-- focused -->
<item android:drawable="@drawable/button_normal" /> <!-- default -->
</selector>
Eso es EXACTAMENTE lo que quiero, excepto que quiero cambiar el fondo de LinearLayout, y no el fondo de ImageButton . ¿Cómo puedo crear un selector XML como el anterior, pero que realmente cambia el fondo de LinearLayout en lugar del fondo ImageButton?
¡¡Gracias de antemano!! =)
Establezca el selector en LinearLayout
y agregue android:descendantFocusability="blocksDescendants"
a él.
En el selector, reemplace todos los fondos de los botones con fondos de diseño.
<LinearLayout
android:id="@+id/homeButtonLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/layout_bg_selector"
android:orientation="vertical"
android:descendantFocusability="blocksDescendants">
<ImageButton
android:id="@+id/homeButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10px"
android:background="@drawable/home_icon"
android:onClick="goBackToCameraScreen" />
</LinearLayout>
selector layout_bg_selector.xml
:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="#F0F0F0" /> <!-- pressed -->
<item android:state_focused="true"
android:drawable="#00F000" /> <!-- focused -->
<item android:drawable="#0000F0" /> <!-- default -->
</selector>