1. 程式人生 > >Android中的Button自定義點選效果之改變點選時按鈕的顏色

Android中的Button自定義點選效果之改變點選時按鈕的顏色

在Android中定義按鈕的點選效果可以通過自定義selector,通過設定兩張不同的背景圖片來改變點選時和未點選時的狀態,但有時候僅僅只想改變點選時按鈕的顏色,但是在selector中並不能直接定義顏色。下面程式碼實現一個點選按鈕時僅僅改變按鈕顏色。
1. 在drawable目錄下面定義:button_press.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@color/colorBack" />

    <stroke
android:width="0.4dp" android:color="@color/colorBack" />
<!--colorBack為按鈕點選時候的顏色--> <!--<corners android:topLeftRadius="10dp" android:topRightRadius="10dp" android:bottomRightRadius="10dp" android:bottomLeftRadius="10dp"/>--> <!-- <padding android:bottom="1dp" android:left="0.5dp" android:right="0.5dp" android:top="1dp" />-->
</shape> button_nopress.xml <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@color/colorBackPress" /> <!--colorBackPress為按鈕未點選時候的顏色--> <stroke android:width="0.4dp" android:color="@color/colorBackPress" /> <!--<corners android:topLeftRadius="10dp" android:topRightRadius="10dp" android:bottomRightRadius="10dp" android:bottomLeftRadius="10dp"/>-->
<!--<padding android:bottom="1dp" android:left="0.5dp" android:right="0.5dp" android:top="1dp" />--> </shape>

2.在drawable目錄下面定義change_color_btn:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/button_press" android:state_enabled="true"
        android:state_pressed="true"/>
    <item android:drawable="@drawable/button_nopress" android:state_enabled="true"
        android:state_pressed="false"/>
</selector>

在定義的按鈕中加上:background=”@drawable/change_color_btn”
上面中的第一步其實就是給按鈕加個邊框裡面再填充上顏色,這樣就解決了selector中不能直接定義顏色的問題。