android用Selector實現Button三種狀態下背景顏色的變化

爲Button設置多種狀態的selector

  • 描述:有時候button需要有多種不同的狀態對應不同的背景,如正常狀態下顏色是紫色,但按下狀態是綠色,不可點狀態是灰色,對應的三種不同背景顏色。
  • 實現:要實現按鈕按下狀態,可點狀態,對應狀態下不同的顏色,需要爲selector設置三個item來對應不同狀態,以實現不同背景顏色。
  • 直接上動圖,效果如下:
    button點擊演示

以下是各個狀態下button所需要設置的背景顏色

事件 狀態 顏色
pressed true
pressed false
enable true
enable false

selector item對應的顏色

pressed enable color
true true
false true
true false
false false

注意點

  • 當控件不可點的時候,肯定是爲灰色的,這裏的selector第一項應該爲控件不可點時的對應選項。
  • 因爲selector是按照item順序來進行判斷的,如果有一項符合則退出selector,不再進行下面item項的判斷。

selector代碼如下

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:state_enabled="false"
        android:drawable="@drawable/shape_bg_button_no_enable"
        />
    <item
        android:state_pressed="false"
        android:drawable="@drawable/shape_bg_button_unpress"
        />
<item
    android:state_pressed="true"
    android:drawable="@drawable/shape_bg_button_onpress"
    />


</selector>

shape佈局如下

1.button不可點狀態:shape_bg_button_no_enable

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >
    <!-- 圓角半徑 -->
    <corners android:radius="200dp" />
    <!-- 填充顏色 -->
    <solid android:color="@android:color/holo_blue_light"/>
    <!-- 線的寬度,顏色灰色 -->
    <stroke android:width="1dp"
        android:color="#fff"
        />  

</shape>
  • 1

2.button正常狀態,可點未按下:shape_bg_button_unpress

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >
    <!-- 圓角半徑 -->
    <corners android:radius="200dp" />
    <!-- 填充顏色 -->
    <solid android:color="@android:color/holo_purple"/>
    <!-- 線的寬度,顏色灰色 -->
    <stroke android:width="2dp"
        android:color="#fff"
        />  

</shape>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 92

3.button可點按下狀態:shape_bg_button_onpress

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >
    <!-- 圓角半徑 -->
    <corners android:radius="200dp" />
    <!-- 填充顏色 -->
    <solid android:color="@android:color/holo_green_light"/>
    <!-- 線的寬度,顏色灰色 -->
    <stroke android:width="2dp"
        android:color="@android:color/holo_orange_dark"
        />  

</shape>
  • 1
  • 2
  • 12
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章