button的點擊效果學習起來事實上比較容易,此點對開發者來說也是使用的比較頻繁的一個知識點,與它相關的還有編輯框的獲取焦點時改變背景顏色、選擇button選擇時改變字體顏色等等。這些其實都是用到的drawable的seletor。
效果:(不點擊時顯示白色,點擊時顯示灰色)
實現這個效果其實很簡單,在drawable中創建一個xml文件,然后輸入兩行代碼即可解決,如圖simple_button_style.xml:
<?xml version="1.0" encoding="utf-8"?> ?
<selector xmlns:android="http://schemas.android.com/apk/res/android"> ?
? ? <item android:state_pressed="true" android:drawable="@android:color/darker_gray"/> ?
? ? <item android:drawable="@android:color/white"/> ?
</selector> ?
第一行表示點擊時顯示的圖片,第二行表示初始狀態顯示的圖片。
然后直接在layout文件中button的background中設置這個xml文件即可,代碼如下:
activity_main:
<?xml version="1.0" encoding="utf-8"?> ?
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" ?
? ? android:layout_width="match_parent" ?
? ? android:layout_height="match_parent" ?
? ? android:fitsSystemWindows="true" ?
> ?
? ? <Button ?
? ? ? ? android:layout_width="match_parent" ?
? ? ? ? android:layout_height="wrap_content" ?
? ? ? ? android:text="button測試" ?
? ? ? ? android:background="@drawable/simple_button_style" ?
? ? ? ? /> ?
</LinearLayout> ?
常見問題:
在selector中設置了點擊效果和初始狀態效果時,點擊卻沒有反應,錯誤效果以及代碼如下:
這里就涉及到seletor選擇圖片的機制了。一旦選擇到了合適的圖片,那么就不會進行之后的判斷了。
拿正確的代碼舉例來說,首先是判斷button是否有被點擊,如果沒有,就不顯示灰色,往下繼續選擇,然后就到了第二行,第二行提供的背景為白色,即顯示白色。
在錯誤的代碼中,第一行沒有條件,即直接選擇白色,跳出選擇,就不會進行之后是否有被點擊的判斷,所以點擊效果不會顯示。