1. 程式人生 > >android selector設定button點選效果(詳細)以及常見問題

android selector設定button點選效果(詳細)以及常見問題

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資源)