android selector設定button點選效果(詳細)以及常見問題
阿新 • • 發佈:2019-02-06
button的點選效果學習起來事實上比較容易,此點對開發者來說也是使用的比較頻繁的一個知識點,與它相關的還有編輯框的獲取焦點時改變背景顏色、選擇button選擇時改變字型顏色等等。這些其實都是用到的drawable的seletor。
當然drawable中還有很多其他效果可以實現,具體的可以參考筆者的另一篇部落格:
效果:(不點選時顯示白色,點選時顯示灰色)
實現這個效果其實很簡單,在drawable中建立一個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>
然後直接在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是否有被點選,如果沒有,就不顯示灰色,往下繼續選擇,然後就到了第二行,第二行提供的背景為白色,即顯示白色。
在錯誤的程式碼中,第一行沒有條件,即直接選擇白色,跳出選擇,就不會進行之後是否有被點選的判斷,所以點選效果不會顯示。
如筆者有的不清楚的地方,歡迎讀者私信或者評論。對drawable有興趣的讀者可以參考筆者的另一篇部落格: android修改控制元件外觀(使用drawable資源)