如何為按鈕設置一組不同狀態的顏色


  之前在開發的過程中遇到一個問題:如何為一個按鈕或者view對象在被點擊或者不可點擊或者被按下的時候顯示不同的狀態,后來了解到有一個資源類型:<selector>,可以用來定義基於控件的狀態而顯示不同的顏色或者圖案。
  比如說我們可以定義一個Button,當它被禁用的時候顯示為灰色,被啟用的時候為綠色,當被按下的時候顯示為黃色。當有了selector元素之后我們就可以在其下面定義多個itme子元素來規定我們的屬性,我么可以看一下下面表的一些屬性:

顏色狀態列表<item>元素的屬性
屬性 解釋
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

持續更新中……

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM