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 回答
1

您试图避免的 XML 文件是实现您想要的简单方法。另一种方法是使用 中的代码来完成onClickListener,在我看来,这是一项需要更多工作的任务。

于 2013-07-30T12:56:15.353 回答
0

您应该使用 XML 文件,否则什么也不做。Android 为按下的按钮提供默认颜色。

于 2013-07-30T13:14:44.513 回答