我正在创建一个像这样的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" />
我想实现一种方法,让按钮在点击/按下时闪烁或改变颜色,以确定它已被点击。我知道我可以将背景引用为一个drawable,其中state_pressed选择器为某种颜色。我试图避免为drawable中的每个按钮创建一个单独的xml文件。如果不创建所有额外的xml文件,最好的方法是什么?
答案 0 :(得分: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" />
答案 1 :(得分:1)
您尝试避免的XML文件是实现您想要的简单方法。
另一种方式是使用onClickListener
中的代码,我认为这是一项需要更多工作的任务。
答案 2 :(得分:0)
你应该使用XML文件,否则什么都不做.Android为按下的按钮提供默认颜色。