Android设置背景色按钮按下



我想改变我的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:width="1sp"
        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:width="1sp"
        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:width="1sp"
        android:color="@color/rose_fonce" />
</shape>

最后,为按钮添加背景:

 <ImageButton
        android:id="@+id/all_annonce_button_search"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        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" />

问题是您使用的不是选择器,而是形状。

试试下面的代码(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" />

最新更新