Android中的Selector的用法詳解及實例
Android中的Selector的用法
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_pressed="true" android:drawable="@drawable/bg_selected"> </item> <item android:drawable="@drawable/bg_unselect"> </item> </selector>
在工作的時候,由于系統(tǒng)給出的控件不夠美觀,因此開發(fā)時領(lǐng)導(dǎo)常常要我更改下界面,用美工給的圖片取代系統(tǒng)圖片。開始時,我只是給按鈕等設(shè)置一下背景圖片,這樣做雖然美觀了,但界面看起來卻比較死板,比如用戶點擊了按鈕后,按鈕沒一點反應(yīng)。于是我就再給控件添加上onTouch監(jiān)聽事件,按下后改變背景顏色,松手后再恢復(fù)原來顏色。但后來發(fā)現(xiàn)了selector這個利器,真是喜出望外,不用再添加onTouch監(jiān)聽事件了,用起來也方便靈活。不得不說,多和其他開發(fā)人員交流技術(shù)經(jīng)驗等還是很有必要的,特別是像我這樣獨自負責(zé)一個app開發(fā)的。
Android的selector要在 drawable 下配置。
其中,selector可以設(shè)置的屬性有:
android:state_pressed 如果是true,當(dāng)被點擊時顯示該圖片,如果是false沒被按下時顯示默認。
android:state_focused 如果是true,獲得焦點時顯示;如果是false沒獲得焦點顯示默認。
android:state_selected 如果是true,當(dāng)被選擇時顯示該圖片;是false未被選擇時顯示該圖片。
android:state_checkable 如果值為true,當(dāng)CheckBox能使用時顯示該圖片;false,當(dāng)CheckBox不能使用時顯示該圖片。
android:state_checked 如果值為true,當(dāng)CheckBox選中時顯示該圖片;false,當(dāng)CheckBox為選中時顯示該圖片。
android:state_enabled 如果值為true,當(dāng)該組件能使用時顯示該圖片;false,當(dāng)該組件不能使用時顯示該圖片。
android:state_window_focused 如果值為true,當(dāng)此activity獲得焦點在最前面時顯示該圖片;false,當(dāng)沒在最前面時顯示該圖片
這些屬性值也可以疊加使用,比如:
android:state_window_focused=”true” android:state_pressed=”true”
表明是非觸摸模式下獲得焦點并單擊時的背景圖片。
一般來說,Button控件只需要用 android:state_pressed就可以。比如,一個Button控件的背景設(shè)置為:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_pressed="true" android:drawable="@drawable/bg_selected"> </item> <item android:drawable="@drawable/bg_unselect"> </item> </selector>
這表明該Button控件按下時,背景圖片是bg_selected,其它情況下(沒有被點擊或者點擊后松開等)背景圖片為bg_unselect。
selector除了可以設(shè)置組件的背景顏色外,也可以設(shè)置文字的顏色。比如某個Button控件被按下后,Button上的文字顏色也發(fā)生改變。例如:
<?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> <item android:color="#000000"></item> </selector>
即該Button控件的顏色為黑色,但按鈕按下后,顏色會變成白色。松開后,顏色恢復(fù)為黑色。
以上可以在代碼中這樣設(shè)置:
<Button android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/btn_slector" android:text="abc" android:textColor="@drawable/text_selector" />
除了selector外,還有一個Shape,可以用來定制控件的圖形效果,兩者可以一起使用。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
Android實現(xiàn)listview動態(tài)加載數(shù)據(jù)分頁的兩種方法
這篇文章主要為大家詳細介紹了Android實現(xiàn)listview動態(tài)加載的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-06-06Android 解決dialog彈出時無法捕捉Activity的back事件問題
這篇文章主要介紹了Android 解決dialog彈出時無法捕捉Activity的back事件問題的相關(guān)資料,需要的朋友可以參考下2016-11-11Android實現(xiàn)3種側(cè)滑效果(仿qq側(cè)滑、抽屜側(cè)滑、普通側(cè)滑)
這篇文章主要為大家詳細介紹了Android實現(xiàn)多種側(cè)滑效果,包括仿qq側(cè)滑,抽屜側(cè)滑,普通側(cè)滑三種效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-04-04