1. 程式人生 > >Android使用selector點選按鈕文字變色

Android使用selector點選按鈕文字變色

需求:開發中按鈕按壓時字型顏色變為灰色 鬆開後恢復


實現:1.res下新建color資料夾(放drawable資料夾下也可),建立檔案btn_text_color.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_focused="false"
      android:state_enabled="true"
      android:state_pressed="false"
      android:color="@color/green"/><!--選擇器的預設顏色-->
      
  <item android:state_enabled="false"
      android:color="@color/text_gray" /><!--控制元件是否接受觸控或者點選事件時的顏色,false不接受-->

  <item android:state_pressed="true"
      android:color="@color/text_gray" /><!--是否按下,如一個按鈕觸控或者點選,true按下-->

  <item android:state_focused="true"
      android:color="@color/text_gray" /><!--是否取得焦點,true取的焦點-->
</selector>

2.佈局檔案中引用

<Button
    android:layout_width="100dp"
    android:layout_height="40dp"
    android:layout_centerVertical="true"
    android:layout_marginLeft="10dp"
    android:background="@drawable/bg_white_shape"
    android:gravity="center"
    android:text="點選測試"
    android:textColor="@color/btn_text_color"
android:textSize="16sp" />

以上已成功測試通過,下面貼一份開發過程中失敗案例(和成功相似,比較難發現)btn_text_color.xml::

<selector xmlns:android="http://schemas.android.com/apk/res/android">

  <item android:color="@drawable/app_base_color" />
  <item android:color="@drawable/text_gray" android:state_pressed="true"/>
  <item android:color="@drawable/text_gray" android:state_pressed="true"/>

</selector>

這種點選不會變色。