一般是通过设置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>