6

次のように ImageButton を作成しています。

          <ImageButton
                android:id="@+id/one"
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_weight="0.333"
                android:adjustViewBounds="true"
                android:background="@null"
                android:contentDescription="@string/description_image_button_one"
                android:scaleType="fitEnd"
                android:src="@drawable/dialpad_1" />

ボタンがクリックされたことを識別するためだけに、クリック/押されたときにボタンを点滅させたり色を変えたりする方法を実装したいと思います。特定の色に state_pressed のセレクターを使用して、背景をドローアブルとして参照できることを知っています。ドローアブルのボタンごとに個別のxmlファイルを作成しないようにしています。これらの余分なxmlファイルをすべて作成せずにこれを行う最良の方法は何ですか?

4

3 に答える 3

10

ボタンの背景用にカスタムのドローアブル セレクターを作成する必要があります。

このファイルは XML フォルダーに保存され、次のようになります (各要素は、選択された状態が異なる場合のボタンの背景を表します)。

ファイル名: res/drawable/my_custom_selector.xml

<selector
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:drawable="@drawable/blue_button_on"
        android:state_focused="true"
        android:state_pressed="true"/>
    <item
        android:drawable="@drawable/blue_button_on"
        android:state_focused="false"
        android:state_pressed="true"/>
    <item
        android:drawable="@drawable/blue_button_off"
        android:state_focused="true"
        android:state_pressed="false"/>
    <item
        android:drawable="@drawable/blue_button_off"
        android:state_focused="false"
        android:state_pressed="false"/>
</selector>

次に、その背景を ImageView (または任意のビュー) に適用するには、背景として設定します。

 <ImageButton
                android:id="@+id/one"
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_weight="0.333"
                android:adjustViewBounds="true"
                android:background="@drawable/my_custom_selector"
                android:contentDescription="@string/description_image_button_one"
                android:scaleType="fitEnd"
                android:src="@drawable/dialpad_1" />
于 2013-07-30T13:15:24.957 に答える
0

XML ファイルを使用するか、何もしないでください。Android は、押されたボタンのデフォルトの色を提供します。

于 2013-07-30T13:14:44.513 に答える