1. 程式人生 > >Android selector標籤下的幾種狀態解讀

Android selector標籤下的幾種狀態解讀

selector標籤,這個標籤是必要的標籤,而且應當作為XML檔案的根節點,在selector可以有一或多個item子標籤在selector標籤中,我們可以配置以下幾種屬性:

xmlns:android="http://schemas.android.com/apk/res/android" 這個是android的名稱空間,預設這麼寫就可以

android:constantSize 這個是布林型,false表示各個狀態的大小(size)各自不同,true表中所有的狀態大小相同(以最大的為準)。預設為false
android:dither 布林型。true表示,如果一個螢幕中點陣圖有這不同的畫素配置,啟用點陣圖的抖動。false表示不啟用點陣圖的抖動。預設為true。據度娘:dither,抖動,是一種故意造成的噪音用以隨機化量化誤差,阻止大幅度拉昇影象時導致的像banding(色帶)這樣的問題。

android:variablePadding 布林型。選擇true時,drawable的內邊距會根據狀態的變化而變化,設定為true時,你必須為不同的狀態配置layout,但是通常不建議這麼做。選擇false時,內邊距保持一致,所有狀態中最大的內邊距。預設為false


接下來是Item標籤item標籤,通過一些屬性的配置,定義drawable的特定狀態。該標籤必須作為selector的子標籤。在item標籤中,我們可以配置一下幾種屬性

android:drawable

這個屬性是必須的,為當前控制元件指定資源。

android:state_pressed

布林值。true指當用戶點選或者觸控該控制元件的狀態。預設為false

android:state_focused

布林值。ture指當前控制元件獲得焦點時的狀態。預設為false

android:state_hovered

布林值。true表示游標移動到當前控制元件上的狀態。預設為false

android:state_selected

布林值。true表示被選擇的狀態,例如在一個下拉列表中用方向鍵下選擇其中一個選項。

這個和focus的區別,selected是focus不充分的情況。比如一個listview獲得焦點(focus),而用方向鍵選擇了其中的一個item(selected)

android:state_checkable

布林值。ture表示可以被勾選的狀態。這個僅在當控制元件具有被勾選和不被勾選的狀態間轉換時才起作用。

android:state_checked

布林值。true表示當前控制元件處於被勾選(check的狀態)

android:state_enabled

布林值。true表示當前控制元件出於可用的狀態。比如可以被點選

android:state_activated

布林值。true表示當前控制元件被啟用的狀態。

android:state_window_focused

布林值。true表示當前控制元件出於最前端時,應用視窗獲得焦點的狀態。

注意:安卓程式在讀取這個檔案時,只會讀取符合當前控制元件狀態的第一個Item的內容。如果在selector下的第一個item中沒有標註以上任何一個狀態,那麼它表示使用任何狀態,將會在空間每次狀態變化時只讀取這個item的內容。所以,這樣的預設的配置,一般都會置於最下面的item中。