<selector>節點的使用,該節點的做用就是定義一組狀態資源圖片,使其可以 html
在不一樣的狀態下更換某個View的背景圖片 android
一.建立xml文件,位置:drawable/xxx.xml,同目錄下記得要放相關圖片 spa
<?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" /> xml
<!-- 觸摸模式下單擊時的背景圖片--> htm
<item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/pic3" /> blog
<!--選中時的圖片背景--> 事件
<item android:state_selected="true" android:drawable="@drawable/pic4" /> 圖片
<!--得到焦點時的圖片背景-->
<item android:state_focused="true" android:drawable="@drawable/pic5" />
</selector>
二.使用xml文件: utf-8
1.方法一:在listview中配置android:listSelector="@drawable/xxx
或者在listview的item中添加屬性android:background="@drawable/xxx" 資源
2.方法二:Drawable drawable = getResources().getDrawable(R.drawable.xxx);
ListView.setSelector(drawable);可是這樣會出現列表有時候爲黑的狀況,須要加上:android:cacheColorHint="@android:color/transparent"使其透明。
相關屬性:
android:state_selected是選中
android:state_focused是得到焦點
android:state_pressed是點擊
android:state_enabled是設置是否響應事件,指全部事件
根據這些狀態一樣能夠設置button的selector效果。也能夠設置selector改變button中的文字狀態。
如下是配置button中的文字效果:
drawable/button_font.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>
Button還能夠實現更復雜的效果,例如漸變
drawable/button_color.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> /
<item android:state_pressed="true">//定義當button 處於pressed 狀態時的形態。
<shape>
<gradient android:startColor="#8600ff" />
<stroke android:width="2dp" android:color="#000000" />