button的點擊效果學習起來事實上比較容易,此點對開發者來說也是使用的比較頻繁的一個知識點,與它相關的還有編輯框的獲取焦點時改變背景顏色、選擇button選擇時改變字體顏色等等。這些其實都是用到的drawable的seletor。
當然drawable中還有很多其他效果可以實現,具體的可以參考筆者的另一篇博客:
# [android修改控件外觀(使用drawable資源)](http://blog.csdn.net/double2hao/article/details/50166275)
效果:(不點擊時顯示白色,點擊時顯示灰色)

實現這個效果其實很簡單,在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資源)](http://blog.csdn.net/double2hao/article/details/50166275)
- 前言
- android Nine-Patch的使用(制作聊天界面必學)
- android 圖片文字輪播效果(圖片和文字自動滾動)
- LinearLayout布局中如何讓控件置底
- viewpager+將activity轉化成view 做主界面(可點擊可滑動,超容易理解的demo)
- android swipeRefreshLayout 下拉刷新 google官方組件
- android 自定義AlertDialog 與Activity相互傳遞數據
- android 簡單地設置Activity界面的跳轉動畫
- android XML動畫初步解析(activity界面之間跳轉demo)
- android selector設置button點擊效果(詳細)以及常見問題
- android 用java動態設置布局(增添刪除修改布局)