1、Android中的狀態選擇器是在drawable文件夾下創建的, 比如btn_selector.xml
2、狀態選擇器的內容寫法:
<?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>
3、使用狀態選擇器
方式一:
在佈局文件中,比如 Button的屬性中使用:android:background=“@drawable/btn_selector"; 另外在listview控件上使用狀態選擇器的時候可以使用屬性:android:listSelector="@drawable/btn_selector"
方式二:
在Java代碼中使用狀態選擇器。
Drawable drawable = getResources().getDrawable(R.drawable.list_item_bg);
// 注意這種情況偶爾會出現listview全黑的情況, 這個時候建議在佈局文件中,listview中添加一行代碼:android:cacheColorHint="@android:color/transparent"
ListView.setSelector(drawable);
// 在btn 這類控件上使用
btn.setSelector(drawable);
上面是背景狀態選擇器的使用介紹。下面我們在背景狀態選擇器的基礎上添加不同背景狀態下的Button上文字的樣式選擇器:
1、同樣的在drawable文件夾下創建btn_font_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:color="#FFF" />
<item android:state_focused="true" android:color="#FFF" />
<item android:state_pressed="true" android:color="#FFF" />
<item android:color="#000" />
</selector>
2、用方式:
仍然是上述的兩種使用方式。這裏就不再贅述了。
同樣的我們也可以使用複合型的狀態選擇器:也就是同時定義不同狀態下的背景、字體和顏色的狀態選擇器,依舊是在drawable文件夾下創建一個xml文件,文件內容如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:color="#FFF"
android:drawable="@drawable/pic5" />
</selector>
同樣的使用方式依舊和上述的一樣。