之前在開發的過程中遇到一個問題:如何為一個按鈕或者view對象在被點擊或者不可點擊或者被按下的時候顯示不同的狀態,后來了解到有一個資源類型:<selector>,可以用來定義基於控件的狀態而顯示不同的顏色或者圖案。
比如說我們可以定義一個Button,當它被禁用的時候顯示為灰色,被啟用的時候為綠色,當被按下的時候顯示為黃色。當有了selector元素之后我們就可以在其下面定義多個itme子元素來規定我們的屬性,我么可以看一下下面表的一些屬性:
屬性 | 解釋 |
color | 指定下列各式之一的一個十六進制顏色必須屬性:#RGB,#ARGB,#RRGGBB,#ARRGGBB。 |
state_enabled | 布爾類型,決定該對象是否能接收觸碰或點擊事件,值為:true或者false。 |
state_checked | 布爾類型,決定該對象是否被選中,值為:true或者false。 |
state_checkable | 布爾類型,決定該對象是否可以被選中,值為:true或者false。 |
state_selected | 布爾類型,決定該對象是否選擇,值為:true或者false。 |
state_focused | 布爾類型,決定該對象是否獲取焦點,值為:true或者false。 |
state_pressed | 布爾類型,決定該對象是否按下,值為:true或者false。 |
那要如何使用呢?接下來舉一個例子:
我們在res/color下新建一個xml文件,命名為textcolor.xml,內容應為為這樣的:
1 <selector xmlns:android="http://schemas.android.com/apk/res/android"> 2 3 <item 4 android:state_enabled="true" 5 android:color="#FF00FF" 6 /> 7 8 <item 9 android:state_pressed="true" 10 android:color="00FF00" 11 /> 12 <item 13 android:state_focused="true" 14 android:color="#FF0000" 15 /> 16 <item 17 android:color="#000000" 18 /> 19 20 </selector>
接着我們在main_activity.xml中定義一個Button,Button可以這樣寫:
<Button android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="HelloWorld" android:textColor="@color/textcolor" />
這樣就可以將Button應用為我們所需要的屬性了。其實是挺簡單的,不過我們一開始如果沒有學到selector的時候就會在java文件中寫大量的無用代碼,這也是可以減輕代碼量的一個小技巧。
BOB
持續更新中……