一、参考开发文档
翻墙打开安卓开发者网站或者离线查看本地开发文档
API在本地SDK路径:Develop –>API Guides –>App Resources –>Resources Types –>Drawable,在文档中找到StateList。
参考文档可知使用状态选择器的思路:
- 在项目中res目录下新建一个文件夹drawable,在drawable下创建一个button.xml,并粘贴下面的selector代码。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/button_pressed" /> <!-- pressed 按下-->
<item android:state_focused="true"
android:drawable="@drawable/button_focused" /> <!-- focused 聚焦-->
<item android:state_hovered="true"
android:drawable="@drawable/button_focused" /> <!-- hovered 浮动-->
<item android:drawable="@drawable/button_normal" /> <!-- default 默认-->
</selector>
2.在drawable-hdpi文件里添加上面每个item中对应的不同颜色图片资源:button_pressed、button_focused、button_normal。
3.在引用状态选择器的地方添加一个背景:(这里是给button添加引用)
android:background="@drawable/button"
二、自定义状态选择器
- 在项目中res/drawable下创建一个textview_selector.xml(只要和第3步引用的地方名称相同就可以)。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 这里只选用两种状态-->
<item android:drawable="@drawable/gradient_box" android:state_pressed="true"/> <!-- pressed 按下-->
<item android:drawable="@android:color/transparent"/> <!-- default 默认-->
</selector>
2.在drawable-hdpi文件里添加上面item中对应名称的资源文件,如图片、颜色(transparent是系统自带的透明色),注:也可以添加xml文件,gradient_box.xml(自定义的彩色背景)具体如下。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!--shape=rectangle:矩形 oval:圆 line:线 ring:圆环-->
<gradient
android:startColor="#FFFF0000"<!--gradient:渐变色-->
android:endColor="#80FF00FF"
android:angle="45"/>
<padding android:left="7dp"
android:top="7dp"
android:right="7dp"
android:bottom="7dp" />
<corners android:radius="5dp" /><!--radius 圆角弧度-->
<stroke android:width="2dp"
android:dashWidth="2dp"/><!--stroke:边框 dashWidth:虚线边框-->
</shape>
3.在需要引用这个状态选择器的地方添加一个背景:(这里是给TextView添加引用)
android:background="@drawable/textview_selector"