1. selector的使用
selector是android中的一种选择器,用selector设置控件的背景,可以动态地更改控件的背景及形状(这里的动态指的是当该控件改变状态时能自动更改背景等),用selector的好处就是不需要在java代码中去处理这些背景的更换等。使用起来比较方便。
定于:selector就是状态列表(StateList), 它分为两种,一种Color-Selector 和Drawable-Selector。
Color-Selector
color-selector 就是颜色状态列表,可以跟color一样使用,颜色会随着组件的状态而改变。
基本的属性如下:
android:color="hex_color"//颜色值,#RGB,$ARGB,#RRGGBB,#AARRGGBB
android:state_pressed=["true"|"false"]//是否触摸
android:state_focused=["true"|"false"]//是否获得焦点
android:state_selected=["true"|"false"]//是否被状态
android:state_checkable=["true"|"false"]//是否可选
android:state_checked=["true"|"false"]//是否选中
android:state_enabled=["true"|"false"]//是否可用
android:state_window_focused=["true"|"false"] />//是否窗口聚焦
使用:
(1)在res/color目录下新建一个 Color resource file 具体的代码编写如下:
fileName: color_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android: state_pressed = "true" android: color: "#ffffff" /> <!-- 触摸下的颜色 -->
<item android:color: "#ff00ff" /> <!-- 默认情况下的颜色 -->
</selector>
(2)使用时只需要把对应控件的颜色属性设置为
例如需要一个按钮的文本在按下的时候有颜色变化,需要这样设置
<Button
.....
.....
android: textColor = "@color/color_selector"
/>
Drawable-Selector
drawable-selector 是背景图状态列表,可以跟图片一样使用,背景会根据组件的状态变化而变化。
基本的属性:
selector的属性
android:constantSize=["true"|"false"]//drawable的大小是否当中状态变化,true表示是变化,false表示不变换,默认为false
android:dither=["true"|"false"]//当位图与屏幕的像素配置不一样时(例如,一个ARGB为8888的位图与RGB为555的屏幕)会自行递色(dither)。设置为false时不可递色。默认true
android:variablePadding=["true"|"false"]>//内边距是否变化,默认false
item 的属性:
android:state_pressed=["true"|"false"]//是否触摸
android:state_focused=["true"|"false"]//是否获取到焦点
android:state_hovered=["true"|"false"]//光标是否经过
android:state_selected=["true"|"false"]//是否选中
android:state_checkable=["true"|"false"]//是否可勾选
android:state_checked=["true"|"false"]//是否勾选
android:state_enabled=["true"|"false"]//是否可用
android:state_activated=["true"|"false"]//是否激活
android:state_window_focused=["true"|"false"] />//所在窗口是否获取焦点
使用:
(1)在res/drawable目录下新建一个 Drawable file 具体的代码编写如下:
fileName: drawable_selector.xml
设置相关属性之后,使用时直接将控件的background设置为该资源文件就好
android: background:"@drawable/drawable_selector"
注意:
使用时,需要将默认的状态放在最后一项,不然的话,其他不起作用。
<item
android: drawable: "@color/c1"
android:state_pressed:"true"/>
<item
android:drawable: "@color/c2"
/>
这样的话就可以在默认的情况下为c2,当触摸时变成颜色c1
如果把顺序倒过来的话是不行的,将没有效果
<item
android: drawable: "@color/c2"/>
<item
android:drawable:"@color/c1"
android:state_pressed:"true"/>