Android selector背景選擇器 用法彙總
阿新 • • 發佈:2019-02-05
作用:可以根據控制元件的狀態來變換背景狀態(比如,一個按鈕,選中時,按鈕變成另外一張圖片)。
用法:建立xml檔案,位置:drawable/xxx.xml,
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="true" android:drawable="@drawable/pic2" /> <item android:state_focused="true" android:drawable="@drawable/pic2" /> <item android:state_pressed="true" android:drawable="@drawable/pic2" /> <item android:drawable="@drawable/pic1" /> <!-- 注:這個要寫在最後面,因為這個滿足大多數條件,若寫在第一個,則後面的不會被觸發--> </selector>
相關屬性解釋:
android:state_focused 是獲得焦點
android:state_pressed 是點選android:state_selected 是選中 (選中=活的焦點+點選)
android:state_enabled 是設定是否響應時間,指所有事件
使用xml檔案:
a.xml中: ListView 的 android:listSelector="@drawable/xxx"
或ListView的item裡面 android:background="@drawable/xxx"
b.程式碼中: Drawable drawable = getResources().getDrawable(R.drawable.xxx);
listView.setSelector(drawable);此時可能會出現列表黑的情況,
加上android:cacheColorHint="@android:color/transparent"使其透明。
作用:可以實現按鈕的繪製,比如button的 圓角,漸變,邊框的繪製。
相關屬性解釋:<shape> <!-- 實心 --> <solid android:color="#ff9d77"/> <!-- 漸變 --> <gradient android:startColor="#ff8c00" android:endColor="#FFFFFF" android:angle="270" /> <!-- 描邊 --> <stroke android:width="2dp" android:color="#dcdcdc" /> <!-- 圓角 --> <corners android:radius="2dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape>
solid: 實心,就是填充的意思
android:color 指定填充的顏色
gradient: 漸變
android:startColor和android:endColor分別為起始和結束顏色,android:angle是漸變角度,必須為45的整數倍
android:type="linear" 預設為線性漸變,可以指定漸變為徑向漸變,type="radial",需指定半徑android:gradientRadius="50"
stroke:描邊
android:width="2dp" 描邊的寬度android:color="red" 描邊的顏色
描邊也可以設定為虛線的形式,
android:dashWidth="5dp" 表示"-"這樣一個橫線的寬度
android:dashGap="3dp" 表示之間隔開的距離
corners: 圓角
android:radius 角的弧度,值越大角越圓還可以設定
android:topRightRadius="20dp" 右上角
android:bottomLeftRadius="20dp" 右下角
android:topLeftRadius="1dp" 左上角
android:bottomRightRadius="0dp" 左下角
selector的混合使用 :
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape>
<!-- 漸變 -->
<gradient
android:startColor="#ff8c00"
android:endColor="#FFFFFF"
android:type="radial"
android:gradientRadius="50" />
<!-- 描邊 -->
<stroke
android:width="2dp"
android:color="#dcdcdc"
android:dashWidth="5dp"
android:dashGap="3dp" />
<!-- 圓角 -->
<corners
android:radius="2dp"/>
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<item>
<shape>
<solid android:color="#ff9d77"/>
<stroke
android:width="2dp"
android:color="#fad3cf" />
<corners
android:topRightRadius="5dp"
android:bottomLeftRadius="5dp"
android:topLeftRadius="0dp"
android:bottomRightRadius="0dp"
/>
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
</selector>