style studio propiedades imagen create crear boton android xml background selector imagebutton

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>