用过selector的都知道,当我们为了更好用户体验,当点击button 或者触摸字体时 ,颜色需要出现相应变化,使用selector背景选择器。
怎么使用呢?简单介绍下。
如果作为布局或者控件背景时,在res下建立drawable文件夹,在drawable文件夹下,新建一个XXX.xml的文件,出现
如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
</selector>
selector中要写代码(各种状态的item)
<item android:drawable="@drawable/press" android:state_focused="true" />
<item android:drawable="@drawable/press" android:state_selected="true" />
<item android:drawable="@drawable/press" android:state_pressed="true" />
<item android:drawable="@drawable/normal" />
解释状态:
android:color="mcolor" //正常情况下
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"] />//是否窗口聚焦
如果我们想要文字颜色改变,那么我们需要在res下建立color文件夹,在color文件夹下新建xxx.xml,selector使用同drawable下用法。
demo:
点击布局修改背景和其中文字
我们使用颜色,所以在res/color/bg.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/colorGray" android:state_focused="true" />
<item android:color="@color/colorGray" android:state_selected="true" />
<item android:color="@color/colorGray" android:state_pressed="true" />
<item android:color="@color/colorWhite" />
</selector>
如果使用图片背景的话,使用drawable文件夹item写法:
<item android:drawable="@drawable/graypic" android:state_selected="true" />
千万不要在使用android:color=…
color中也不要使用drawable=…
最后在布局及TextView文件中使用即可
android:background="@color/bg"
android:textColor="@color/tvbg"