继续简单粗暴,直接上代码。
不获取焦点也不点击时Button的默认背景btn_unfocus_bg.xml:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <corners android:radius="@dimen/dp_4" /> <solid android:color="#f1f1f1" /> </shape>
获取焦点但是不点击时Button的背景btn_focus_bg.xml:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <corners android:radius="@dimen/dp_4" /> <solid android:color="@color/yellow" /> </shape>
点击时Button的背景btn_press_bg.xml:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <corners android:radius="@dimen/dp_4" /> <solid android:color="@color/red" /> </shape>
selector_btn.xml :
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/btn_press_bg" android:state_focused="true" android:state_pressed="true" /> <item android:drawable="@drawable/btn_press_bg" android:state_focused="false" android:state_pressed="true" /> <item android:drawable="@drawable/btn_focus_bg" android:state_focused="true" android:state_pressed="false" /> <!--默认时的背景图片--> <item android:drawable="@drawable/btn_unfocus_bg" /> </selector>
selector文件中注意默认的背景图片标签放到最后,这也是很多selector 没有效果的原因。
最后,在布局文件中引用:
<Button android:id="@+id/btn" android:layout_width="@dimen/dp_267" android:layout_height="@dimen/dp_59" android:layout_marginTop="@dimen/dp_127" android:gravity="center" android:textColor="#171C2D" android:background="@drawable/selector_btn" android:textSize="@dimen/dp_23" />