Android中的Selector的用法

來源:互聯網
上載者:User

標籤:android   style   blog   http   io   ar   color   使用   sp   

     

<?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>

 

在工作的時候,由於系統給出的控制項不夠美觀,因此開發時領導常常要我更改下介面,用美工給的圖片取代系統圖片。開始時,我只是給按鈕等設定一下背景圖片,這樣做雖然美觀了,但介面看起來卻比較死板,比如使用者點擊了按鈕後,按鈕沒一點反應。於是我就再給控制項添加上onTouch監聽事件,按下後改變背景顏色,鬆手後再恢複原來顏色。但後來發現了selector這個利器,真是喜出望外,不用再添加onTouch監聽事件了,用起來也方便靈活。不得不說,多和其他開發人員交流技術經驗等還是很有必要的,特別是像我這樣獨自負責一個app開發的。
      
      android的selector要在 drawable 下配置。
      其中,selector可以設定的屬性有:
                    android:state_pressed           如果是true,當被點擊時顯示該圖片,如果是false沒被按下時顯示預設。

                  android:state_focused           如果是true,獲得焦點時顯示;如果是false沒獲得焦點顯示預設。

                  android:state_selected          如果是true,當被選擇時顯示該圖片;是false未被選擇時顯示該圖片。

                  android:state_checkable         如果值為true,當CheckBox能使用時顯示該圖片;false,當CheckBox不能使用時顯示該圖片。

                  android:state_checked           如果值為true,當CheckBox選中時顯示該圖片;false,當CheckBox為選中時顯示該圖片。

                  android:state_enabled           如果值為true,當該組件能使用時顯示該圖片;false,當該組件不能使用時顯示該圖片。
 
                  android:state_window_focused    如果值為true,當此activity獲得焦點在最前面時顯示該圖片;false,當沒在最前面時顯示該圖片

     這些屬性值也可以疊加使用,比如:
                                                   android:state_window_focused="true"  android:state_pressed="true"
   

   表明是非觸摸模式下獲得焦點並單擊時的背景圖片。

  一般來說,Button控制項只需要用 android:state_pressed就可以。比如,一個Button控制項的背景設定為:

  

<?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除了可以設定組件的背景顏色外,也可以設定文字的顏色。比如某個Button控制項被按下後,Button上的文字顏色也發生改變。例如:

<?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控制項的顏色為黑色,但按鈕按下後,顏色會變成白色。鬆開後,顏色恢複為黑色。

以上可以在代碼中這樣設定:

<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,可以用來定製控制項的圖形效果,兩者可以一起使用。

   

轉自:http://blog.163.com/feng_yun_ju/blog/static/1781903932013416104215773

 

Android中的Selector的用法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.