Android實現(xiàn)帶有刪除按鈕的EditText示例代碼
一、首先來看看效果

這是一個帶有刪除按鈕的輸入文本框, 需要新建一個類繼承自EditText, 先把代碼貼出來, 然后在解釋:
示例代碼如下:
public class EditTextWithDel extends EditText {
private final static String TAG = "EditTextWithDel";
private Drawable imgInable;
private Context mContext;
public EditTextWithDel(Context context) {
this(context, null, 0);
}
public EditTextWithDel(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public EditTextWithDel(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
mContext = context;
init();
}
private void init() {
imgInable = mContext.getResources().getDrawable(android.R.drawable.ic_delete);
addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
setDrawable();
}
});
setDrawable();
}
// 設置刪除圖片
private void setDrawable() {
if (length() < 1) {
setCompoundDrawablesWithIntrinsicBounds(null, null, null, null);
} else {
setCompoundDrawablesWithIntrinsicBounds(null, null, imgInable, null);
}
}
// 處理刪除操作
@Override
public boolean onTouchEvent(MotionEvent event) {
if (imgInable != null && event.getAction() == MotionEvent.ACTION_UP) {
int eventX = (int) event.getRawX();
int eventY = (int) event.getRawY();
Log.d(TAG, "(" + eventX + ", " + eventY + ")");
Rect rect = new Rect();
getGlobalVisibleRect(rect);
rect.left = rect.right - 70;
Log.d(TAG, rect.toString());
if (rect.contains(eventX, eventY)) {
setText("");
}
}
return super.onTouchEvent(event);
}
@Override
protected void finalize() throws Throwable {
super.finalize();
}
}
解釋如下
首先看一下setCompoundDrawablesWithIntrinsicBounds(Drawable left, Drawable top, Drawable right, Drawable bottom)這個名字賊長的方法, 雖然名字很長, 其實這個方法用起來和簡單, 就是設置左上右下的圖片, 這個dome只需要設置右邊的就行了, 可以看一下全部設置的效果
接著就是還要監(jiān)聽Touch, 這里要說一下getRawX()和getX()的區(qū)別, getRawX()或者getRawY()方法是以屏幕為參考, getX()和getY()方法是以容器為參考, 所以二者得到的值可能不一樣. 之后在利用getGlobalVisibleRect()方法得到視圖的位置, 存放到rect中, 這里是以屏幕左上角為起點的, 所以前面用的是getRaw方法.
當然也可以 使用getLocalVisibleRect方法, 這個方法是以View的左上角為起點的, 所以用這個方法的話, 就得使用getX()和getY()方法來或獲取觸摸點的x和y值了.
總結
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對各位Android開發(fā)者們能有所幫助,如果有疑問大家可以留言交流。
- Android 自定義EditText輸入框帶清空按鈕
- Android 帶有刪除按鈕的EditText
- Android如何自定義EditText下劃線?
- Android EditText自定義樣式的方法
- Android UI設計系列之自定義EditText實現(xiàn)帶清除功能的輸入框(3)
- Android自定義EditText右側帶圖片控件
- Android中自定義的dialog中的EditText無法彈出輸入法解決方案
- Android如何自定義EditText光標與下劃線顏色詳解
- Android實現(xiàn)自定義帶刪除功能的EditText實例
- Android開發(fā)實現(xiàn)帶清空按鈕的EditText示例
相關文章
APP添加CNZZ統(tǒng)計插件教程 Android版添加phonegap
這篇文章主要介紹了APP添加CNZZ統(tǒng)計插件教程,Android版添加phonegap,感興趣的小伙伴們可以參考一下2015-12-12
Android使用xml文件資源定義菜單實現(xiàn)方法示例
這篇文章主要介紹了Android使用xml文件資源定義菜單實現(xiàn)方法,結合實例形式分析了Android資源文件管理及xml配置自定義菜單相關操作技巧,需要的朋友可以參考下2019-03-03
Android用tabhost實現(xiàn) 界面切換,每個界面為一個獨立的activity操作
這篇文章主要介紹了Android用tabhost實現(xiàn) 界面切換,每個界面為一個獨立的activity操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
Android項目實戰(zhàn)手把手教你畫圓形水波紋loadingview
這篇文章主要為大家詳細介紹了Android項目實戰(zhàn)手把手教你畫圓形水波紋loadingview,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-01-01
Android JNI處理圖片實現(xiàn)黑白濾鏡的方法
這篇文章主要介紹了Android JNI處理圖片實現(xiàn)黑白濾鏡的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01
Android ViewPager實現(xiàn)動畫切換效果
這篇文章主要為大家詳細介紹了Android ViewPager實現(xiàn)動畫切換效果的相關資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-01-01
Android中google Zxing實現(xiàn)二維碼與條形碼掃描
這篇文章主要介紹了Android中google Zxing實現(xiàn)二維碼與條形碼掃描的相關資料,需要的朋友可以參考下2017-05-05
Android編程實現(xiàn)TextView垂直自動滾動功能【附demo源碼下載】
這篇文章主要介紹了Android編程實現(xiàn)TextView垂直自動滾動功能,詳細分析了Android TextView垂直自動滾動功能的實現(xiàn)步驟與布局、功能相關技巧,并附帶了demo源碼供讀者下載,需要的朋友可以參考下2017-02-02

