Android的 - 如何创建布局选择器(像一个ImageButton的选择)(Android -

2019-06-25 03:35发布

我有一个ImageButton的和包装的LinearLayout那个按钮,如下所示:

<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>

我把背景周围的ImageButton 在LinearLayout中 ,你可以在上面看到。

我希望能够改变这样的背景下(也就是LinearLayout中 ,该ImageButton的不是背景的背景 ),当用户点击的ImageButton。 我能做到这一点编程,但我想这样做,通过XML。 我可以很容易通过编写一个选择,这样的改变的ImageButton的背景:

    <?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>

正是我想要的,但我想改变的LinearLayout的背景,而不是背景的ImageButton。 如何创建一个XML选择,就像上面的一个,但实际上改变了的LinearLayout代替的ImageButton背景的背景?

先感谢您!! =)

Answer 1:

选择设置为您LinearLayout ,并添加android:descendantFocusability="blocksDescendants"给它。

在选择,更换布局背景的所有按钮的背景。

<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>

选择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>


文章来源: Android - How can I create a selector for Layouts (like an ImageButton selector)