我希望在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>
我的按钮的正常颜色是“玫瑰正常”,但按下时从未变成“玫瑰深色”。
问题出在哪里?
编辑:问题已解决:
创建一个名为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" />