在開發過程中,可能會遇到一些輸入框,要求有內容的時候會在后邊顯示一個用于刪除全部內容的按鈕,點擊可刪除全部內容,當該輸入框沒有內容時,該刪除按鈕就隱藏,感覺很智能。這篇文章就用來展示如何自定義這個edittext。
首先,我們需要把產品的需求變成開發者的需求,有人會問,需求不一樣嗎,其實就是跟那句歌詞一樣:“說不一樣,其實也一樣”,只不過,產品的需求就是表面上的,而我們要用一種編程思想給表達出來:
1、判斷edittext獲取到焦點時,判斷內容是否為空
2、判斷內容不為空時,判斷是否獲取到焦點
3、此時,如果獲取到焦點且內容不為空,清除按鈕顯示,否則隱藏
4、如果按鈕顯示,點擊該按鈕,內容清空
由以上幾點,就可以大致明白寫代碼的邏輯思想了。
第一步,肯定是創建構造體,初始化。這都是必備的。
創建構造體
接下來就是初始化,這里主要是初始化刪除按鈕
初始化刪除按鈕
代碼里邊的注釋都寫的很詳細,一眼都明白,就不過多解釋。
接下來就按照我們已經捋好的邏輯進行代碼編輯,在焦點改變時,判斷內容是否為空,如果不為空,顯示刪除圖標,否則隱藏
焦點改變時
然后判斷內容改變時,設置刪除圖標是否顯示
內容改變時
設置按鈕是否展示的方法就很簡單了,這里就不再貼代碼了。
按鈕是否展示的工作已經全部完成了,剩下的任務就是點擊刪除按鈕的時候的處理事件,在onTouch事件中,當事件為up時,如果觸摸區域為按鈕附近,則設置內容為“”。具體代碼如下所示。
觸摸事件
判斷手指抬起,按鈕顯示,點擊區域適當,設置內容為空。這里不對getX() getHeight()等做過多解釋,請查閱相關資料,這里不是重點。
perfect!!!