編輯:關於Android編程
最近在看代碼的時候,看到很多時候,在代碼中會使用selector來控制button或listview在不同狀態下樣式(比如在滾動圖片的例子中)
今天,我就來著重學習一下在android中selector的用法
我查了一下android的API文檔,在API文檔中,對這樣的寫法的名稱叫做state list
我們可以在這個地址(http://developer.android.com/intl/zh-cn/guide/topics/resources/drawable-resource.html)查看到API中對state list的說明,本文的主要內容其實就是對API文檔的翻譯和解讀
A StateListDrawable is a drawableobject defined in XML that uses a several different images to represent thesame graphic, depending on the state of the object. For example, a Button widget canexist in one of several different states (pressed, focused, or niether) and,using a state list drawable, you can provide a different background image foreach state.
You can describe thestate list in an XML file. Each graphic
is represented by an
During
eachstate change, the state list is traversed top to bottom and the first item thatmatches the current state is used—the selection is not based
on the "best match," but simply the first itemthat meets the minimum criteria of the state.
StateListDrawable是在XML中定義的一個可繪制(drawable)的對象,它可以根據狀態的不同為同一個圖形更換不同的圖片。比如說,對於一個按鈕控件(Button)可以有幾種不同的狀態(pressed,focused或者其它),你可以使用state list為其中的每一個狀態來設置按鈕的背景圖片。
你可以在XML文件中申明state list。在Selector標簽中每一對item標簽對應一個圖形。每個item標簽中都可以設置一個屬性值去表示當前狀態下圖形的樣子。
每當狀態發生改變時,系統會在state list中從上到下遍歷尋找與之相匹配的狀態。注意,這裡在遍歷時只會取去當前狀態相匹配的第一個Item,而不是最匹配的那一個。
XML文件的位置:
res/drawable/filename.xml
編譯後的數據類型:
該文件將會編譯為一個StateListDrawable對象
如何引用該文件:
In Java: R.drawable.filename
In XML: @[package:]drawable/filename
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表示當前控件出於最前端時,應用窗口獲得焦點的狀態。
之前項目總會遇到很多搜索框類的功能,雖然不是很復雜,不過每次都要去自己處理數據,並且去處理搜索框的變化,寫起來也比較麻煩,今天來做一個比較簡單的通用搜索欄。先看下效果圖:
效果圖: 這樣來寫: @Override protected void onCreate(Bundle savedInstanceSta
本節引言: 嘿嘿,假如你們公司是做HTML5端的移動APP的,就是通過WebView來顯示網頁的,假如你訪問的網頁 不存在,或者其他錯誤,報404,401,4
雖然很多同學已經順利入手了魅藍Note3,也根據網上的一些相關資料獲取到了魅藍Note3的Root權限,但是在使用一些修改類的軟件時候依舊會碰到提示該設備未