Android中的Button自定義點選效果之改變點選時按鈕的顏色
阿新 • • 發佈:2019-02-09
在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中不能直接定義顏色的問題。