2015-09-06
1:31 PM
若直接使用 background 屬性修改按鈕等物件的背景顏色時通常無法保留點擊效果
如 android:background="#333333" 雖然修改了背景顏色
點擊觸發的預設動畫卻也跟著不見了
但其實是有辦法可以保留並自訂點擊特效的顏色
不論是背景顏色還是點擊效果的顏色都可以修改
方法就是將以下 xml 設定新增到 drawable 目錄底下即可
套用方式則是修改 background 屬性值
android:background="@drawable/YOUR_DRAWABLE_FILE_NAME"
程式碼範例
我們先看 API 21 以上的版本修改方式
新增一個 drawable 的 Resource
並將內容修改為以下 xml 格式
<ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/main_login_button_ripple"> <item android:drawable="@color/main_login_button_background"/> </ripple>
@color/main_login_button_ripple 為點擊後效果的顏色 可自行在 color.xml 設定
@color/main_login_button_background 為按鈕背景顏色 可自行在 color.xml 設定
API 20 以下的版本則要使用以下格式的 xml
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@color/main_login_button_ripple" android:state_pressed="true"/> <item android:drawable="@color/main_login_button_ripple" android:state_focused="true"/> <item android:drawable="@color/main_login_button_background"/> </selector>
@color/main_login_button_ripple 為點擊後效果的顏色 可自行在 color.xml 設定
@color/main_login_button_background 為按鈕背景顏色 可自行在 color.xml 設定
所以其實就是自訂兩個 color 參數
分別給背景與特效使用即可
當然此方法也可以自訂背景的形狀 例如加上圓角
方法跟 layer-list 相同
<ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/fav_item_ripple"> <item> <shape> <solid android:color="@color/fav_item_background"></solid> <corners android:radius="10px"></corners> </shape> </item> </ripple>
各項資料連結
Drawable Resources
No comments:
Post a Comment