Android中的Selector主要是用来改变ListView和其他View控件的默认背景。
Selector常用状态(值为true或false):
Android:state_selected 控件选中状态
android:state_focused 控件获得焦点状态
android:state_pressed 控件点击状态
android:state_enabled 控件使能状态,设置是否响应事件,指所有事件
android:state_checkable 控件可勾选状态
android:state_checked 控件勾选状态
实现方式如下:
- 在res/drawable/目录下建立个my_bg.xml文件
下面是个模板,可根据自己需求设置相关的属性
<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 默认时的背景图片-->
<item android:drawable="@drawable/pic1" />
<!-- 没有焦点时的背景图片 -->
<item android:state_window_focused="false"
android:drawable="@drawable/pic1" />
<!-- 非触摸模式下获得焦点并单击时的背景图片 -->
<item android:state_focused="true" android:state_pressed="true" android:drawable= "@drawable/pic2" />
<!-- 触摸模式下单击时的背景图片-->
<item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/pic3" />
<!--选中时的图片背景-->
<item android:state_selected="true" android:drawable="@drawable/pic4" />
<!--获得焦点时的图片背景-->
<item android:state_focused="true" android:drawable="@drawable/pic5" />
</selector>
- 引用my_bg.xml文件(以listView为例)
1、在ListView中添加如下属性代码 android:listSelector="@drawable/my_bg"
2、android:background="@drawable/my_bg"
3、在java代码编写
Drawable drawable = getResources().getDrawable(R.drawable.mylist_view);
listView.setSelector(drawable);
备注:
为了防止列表拉黑的情况发生,需要在ListView中添加以下的属性代码
android:cacheColorHint="@android:color/transparent"