1. 程式人生 > >Android開發之一鍵清空內容的輸入框

Android開發之一鍵清空內容的輸入框

前言:
在日常的開發中因為涉及到使用者互動的問題,我們難免會涉及到一些控制元件的使用,比如輸入框EditText,文字顯示控制元件TextView,這些控制元件都是Google在Android原生的api裡面提供給我們開發者用來方便開發的控制元件,這些控制元件在一些基本需求的情況都可以滿足,但是在使用者互動如此注重的時代難免存在一點美中不足,那就需要我們對這些原生的控制元件進行一些修改,以便於達到我們的需求,話不多說,先上圖:
這裡寫圖片描述
接下來說一說實現步驟,從效果圖我們可以看出這是一個輸入框,用它來跟原生的EditText對比一下的,可以看見後面多了一個刪除的圖示,那我們的實現思路為定義一個類繼承於原生的EditText然後進行我們需要的處理操作。
步驟一:
定義一個變數來實現後面刪除圖示的引用以及左,上,下間距的變數:

imgAble = mContext.getResources().getDrawable(R.drawable.delete_img);
drawableLeft = getCompoundDrawables()[0];
drawableTop = getCompoundDrawables()[1];
drawableButtom = getCompoundDrawables()[3];

判斷輸入框文字的長度,根據長度判斷是否顯示刪除圖示
if (length() < 1) {
setCompoundDrawablesWithIntrinsicBounds(drawableLeft, drawableTop, imgInable, drawableButtom);
} else {
setCompoundDrawablesWithIntrinsicBounds(drawableLeft, drawableTop, imgAble, drawableButtom);
}
步驟二:重寫onTouchEvent方法實現點選刪除圖示清空輸入框的邏輯

public boolean onTouchEvent(MotionEvent event) {
    if (imgAble != null && event.getAction() == MotionEvent.ACTION_UP) {
        int eventX = (int) event.getRawX();
        int eventY = (int) event.getRawY();
        Rect rect = new Rect();
        getGlobalVisibleRect(rect);
        rect.left = rect.right - 50;
        if (rect.contains(eventX, eventY))
            setText("");
    }
    return super.onTouchEvent(event);
}

到這裡,一個帶清空輸入功能的輸入框就完成了,歡迎大家一起留言改正其中的不足