按下Android设置背景颜色按钮
Posted
技术标签:
【中文标题】按下Android设置背景颜色按钮【英文标题】:Android set background color button pressed 【发布时间】:2014-06-28 12:49:20 【问题描述】:我想在按下事件时更改 ImageButton 的背景颜色。
这就是我所做的:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<solid android:color="@color/rose_normal" />
<solid
android:state_pressed="true"
android:color="@color/rose_fonce" />
<stroke
android:
android:color="@color/rose_fonce" />
</shape>
我的按钮在“rose_normal”颜色很好,但在按下时从来没有“rose_fonce”颜色。
问题出在哪里?
编辑:问题已解决:
创建一个名为 background_rounded_button.xml 的 xml 文件:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/rounded_button_rose_fonce" android:state_selected="true"></item>
<item android:drawable="@drawable/rounded_button_rose_fonce" android:state_pressed="true"></item>
<item android:drawable="@drawable/rounded_button_rose_normal"></item>
</selector>
rounded_button_rose_fonce.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<solid android:color="@color/rose_fonce" />
<stroke
android:
android:color="@color/rose_fonce" />
</shape>
rounded_button_rose_normal.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<solid android:color="@color/rose_normal" />
<stroke
android:
android:color="@color/rose_fonce" />
</shape>
最后,为按钮应用背景:
<ImageButton
android:id="@+id/all_annonce_button_search"
android:layout_
android:layout_
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginBottom="10dp"
android:layout_marginRight="10dp"
android:background="@drawable/background_rounded_button.xml"
android:padding="16dp"
android:src="@drawable/ic_action_search" />
【问题讨论】:
【参考方案1】:问题在于您使用的不是选择器,而是形状。
试试这个代码(button_selector.xml,把它放在你的drawable
文件夹中):
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/rose_fonce" android:state_selected="true"></item>
<item android:drawable="@color/rose_fonce" android:state_pressed="true"></item>
<item android:drawable="@color/rose_normal"></item>
</selector>
当将此选择器设置为作为Button
的背景时,它在正常状态下将具有“rose_normal”颜色,在按下或选择时将具有“rose_fonce”颜色。
例子:
<Button
android:background="@drawable/button_selector" />
【讨论】:
谢谢,它工作得很好,但我的按钮的椭圆形状丢失了。我怎样才能重新添加这个椭圆? @wawanopoulos,尝试设置您自定义的两个椭圆形图像而不是颜色。以上是关于按下Android设置背景颜色按钮的主要内容,如果未能解决你的问题,请参考以下文章