一般是通過設置background爲drawable資源實現不同狀態不同背景。
代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_enabled="false"//是否可點擊
android:drawable="@drawable/bn_state_enabled"
/>
<item
android:state_focused="false"//是否獲取焦點
android:drawable="@drawable/bn_state_default"
/>
<item
android:state_pressed="true"//是否點擊
android:drawable="@drawable/bn_state_clicked"
/>
<item
android:state_focused="true"
android:drawable="@drawable/bn_state_focused"
/>
</selector>
state_xxx屬性是控件的狀態,屬性值爲true和false,drawable屬性對應着這個狀態下的不同資源背景或者顏色,以其中一個爲例:
bn_state_clicked:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<solid android:color="#eb0010" />
<!-- <stroke android:color="#CCCCCC" android:width="1dp" android:dashWidth="5dp" android:dashGap="3dp"/> -->
<stroke android:color="#eb0010" android:width="2dp"/>
<corners
android:bottomLeftRadius="5dp"
android:bottomRightRadius="5dp"
android:topLeftRadius="5dp"
android:topRightRadius="5dp" />
</shape>
textview的文字顏色切換則需要設置textview對應的textcolor屬性爲drawable資源,代碼如下
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/white" android:state_selected="true"/>
<item android:color="@color/item_pressed_color" android:state_activated="true"/>
<item android:color="@color/item_default_color"/>
</selector>