2

次のように、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>

上記のように、 LinearLayoutの ImageButton の周りに背景を配置しました。

ユーザーが ImageButton をクリックしたときに、その背景 (つまり、 ImageButton の背景ではなく、LinearLayout の背景) を変更できるようにしたいと考えています。プログラムでそれを行うこともできますが、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>

ImageButton background ではなくLinearLayout背景を変更したいことを除いて、それはまさに私が欲しいものです。上記のような XML セレクターを作成するにはどうすればよいですか?しかし、実際には ImageButton の背景ではなく LinearLayout の背景を変更しますか??

前もって感謝します!!=)

4

2 に答える 2

4

セレクターを your に設定して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>
于 2012-06-04T04:22:12.693 に答える