用過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"