Android中Selector的用法(改變ListView和Button的默認背景)


Android中的Selector的用法

http://blog.csdn.net/shakespeare001/article/details/7788400#comments

 

Android中的Selector主要是用來改變ListView和Button控件的默認背景

 one template:

<?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/ic_mymenu_pressed" /> <!-- pressed -->
     <item android:state_focused="true"
           android:drawable="@drawable/ic_mymenu_pressed" /> <!-- focused -->
     <item android:drawable="@drawable/ic_mymenu" /> <!-- default -->  
</selector>

 

<?xml version="1.0" encoding="utf-8" ?>     
<selector xmlns:android="http://schemas.android.com/apk/res/android">   
<!-- 默認時的背景圖片-->    
  <item android:drawable="@drawable/pic1" />      
<!-- 沒有焦點時的背景圖片 -->    
  <item android:state_window_focused="false"     
        android:drawable="@drawable/pic1" />     
<!-- 非觸摸模式下獲得焦點並單擊時的背景圖片 -->    
  <item android:state_focused="true" android:state_pressed="true"   android:drawable= "@drawable/pic2" />   
<!-- 觸摸模式下單擊時的背景圖片-->    
<item android:state_focused="false" android:state_pressed="true"   android:drawable="@drawable/pic3" />    
<!--選中時的圖片背景-->    
  <item android:state_selected="true"   android:drawable="@drawable/pic4" />     
<!--獲得焦點時的圖片背景-->    
  <item android:state_focused="true"   android:drawable="@drawable/pic5" />     
</selector>

ListView設置點擊背景效果,有三種方法可以來引用剛才創建的selector文件:

(1)在ListView中添加如下屬性代碼
android:listSelector="@drawable/mylist_view"

(2)在ListView的item界面中添加如下屬性代碼
android:background="@drawable/mylist_view"

(3)利用JAVA代碼直接編寫
Drawable drawable = getResources().getDrawable(R.drawable.mylist_view);
listView.setSelector(drawable);

為了防止列表拉黑的情況發生,需要在ListView中添加以下的屬性代碼
android:cacheColorHint="@android:color/transparent"
or
android:cacheColorHint="#00000000"

or

listView.setCacheColorHint(0); 

 

屬性介紹:

android:state_selected 選中

android:state_focused 獲得焦點

android:state_pressed 點擊

android:state_enabled 設置是否響應事件,指所有事件

 


 

自定義Button Style

每個button創建的時候都是用的系統默認的風格,如果不滿意系統提供的風格的話,你可以用一個 state list drawable 來替代以前的風格.每個state list drawable 是一個drawable resource. 它定義在xml文件中,並且能改變當前的每個狀態的背景圖.一旦定義了一個自己設計的xml文件,可以在android:background中使用它.

此xml文件中的格式如下,並且很明顯發現,一個xml由一個selector元素,包含N個item元素組

<?xml version="1.0" encoding="utf-8"?>  
<selector xmlns:android="http://schemas.android.com/apk/res/android"  
    android:constantSize=["true" | "false"]  
    android:dither=["true" | "false"]  
    android:variablePadding=["true" | "false"] >  
    <item  
        android:drawable="@[package:]drawable/drawable_resource"  
        android:state_pressed=["true" | "false"]  
        android:state_focused=["true" | "false"]  
        android:state_hovered=["true" | "false"]  
        android:state_selected=["true" | "false"]  
        android:state_checkable=["true" | "false"]  
        android:state_checked=["true" | "false"]  
        android:state_enabled=["true" | "false"]  
        android:state_activated=["true" | "false"]  
        android:state_window_focused=["true" | "false"] />  

 

//例子:
<?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/button_pressed" /> <!-- pressed -->  
    <item android:state_focused="true"  
          android:drawable="@drawable/button_focused" /> <!-- focused -->  
    <item android:state_hovered="true"  
          android:drawable="@drawable/button_focused" /> <!-- hovered -->  
    <item android:drawable="@drawable/button_normal" /> <!-- default -->  
</selector>  


免責聲明!

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



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