Android之drawable state各個屬性詳解

來源:互聯網
上載者:User

標籤:android   style   blog   http   java   使用   strong   io   

 

我們在定義一個drawable的時候可以通過xml定義的drawable對象。它使得一個圖片能在不同的狀態下顯示不同的圖案,比如一個 Button,它有pressed,focused,或者其它狀態,通過使用state list drawable,你就可以為每種狀態提供不同的圖片。

先看一個範例:

XML file saved at res/drawable/button.xml:

[java] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <selector xmlns:android="http://schemas.android.com/apk/res/android">  
  3.     <item android:state_pressed="true" android:state_enabled="true" android:state_window_focused="false"  
  4.           android:drawable="@drawable/button_pressed" /> <!-- pressed,enable等多個屬性 -->  
  5.     <item android:state_focused="true"  
  6.           android:drawable="@drawable/button_focused" /> <!-- focused -->  
  7.     <item android:state_hovered="true"  
  8.           android:drawable="@drawable/button_focused" /> <!-- hovered -->  
  9.     <item android:drawable="@drawable/button_normal" /> <!-- default -->  
  10. </selector>  


 

This layout XML applies the state list drawable to a Button:

[java] view plaincopy
  1. <Button  
  2.     android:layout_height="wrap_content"  
  3.     android:layout_width="wrap_content"  
  4.     android:background="@drawable/button" />  



android:drawable 放一個drawable資源
android:state_pressed 是否按下,如一個按鈕觸摸或者點擊。
android:state_focused 是否取得焦點,比如使用者選擇了一個文字框。
android:state_hovered 游標是否懸停,通常與focused state相同,它是4.0的新特性
android:state_selected 被選中,它與focus state並不完全一樣,如一個list view 被選中的時候,它裡面的各個子組件可能通過方向鍵,被選中了。
android:state_checkable 組件是否能被check。如:RadioButton是可以被check的。
android:state_checked 被checked了,如:一個RadioButton可以被check了。
android:state_enabled 能夠接受觸摸或者點擊事件
android:state_activated 被啟用(這個麻煩舉個例子,不是特明白)
android:state_window_focused 應用程式是否在前台,當有通知欄被拉下來或者一個對話方塊彈出的時候應用程式就不在前台了

 

注意:如果有多個item,那麼程式將自動從上到下進行匹配,最先匹配的將得到應用。(不是通過首選)
如果一個item沒有任何的狀態說明,那麼它將可以被任何一個狀態匹配。

 

詳細的請看官方的API,那裡寫的更詳細~!http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.