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

這是一個(gè)帶有刪除按鈕的輸入文本框, 需要新建一個(gè)類繼承自EditText, 先把代碼貼出來(lái), 然后在解釋:
示例代碼如下:
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();
}
// 設(shè)置刪除圖片
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)這個(gè)名字賊長(zhǎng)的方法, 雖然名字很長(zhǎng), 其實(shí)這個(gè)方法用起來(lái)和簡(jiǎn)單, 就是設(shè)置左上右下的圖片, 這個(gè)dome只需要設(shè)置右邊的就行了, 可以看一下全部設(shè)置的效果
接著就是還要監(jiān)聽(tīng)Touch, 這里要說(shuō)一下getRawX()和getX()的區(qū)別, getRawX()或者getRawY()方法是以屏幕為參考, getX()和getY()方法是以容器為參考, 所以二者得到的值可能不一樣. 之后在利用getGlobalVisibleRect()方法得到視圖的位置, 存放到rect中, 這里是以屏幕左上角為起點(diǎn)的, 所以前面用的是getRaw方法.
當(dāng)然也可以 使用getLocalVisibleRect方法, 這個(gè)方法是以View的左上角為起點(diǎn)的, 所以用這個(gè)方法的話, 就得使用getX()和getY()方法來(lái)或獲取觸摸點(diǎn)的x和y值了.
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)各位Android開(kāi)發(fā)者們能有所幫助,如果有疑問(wèn)大家可以留言交流。
- Android 自定義EditText輸入框帶清空按鈕
- Android 帶有刪除按鈕的EditText
- Android如何自定義EditText下劃線?
- Android EditText自定義樣式的方法
- Android UI設(shè)計(jì)系列之自定義EditText實(shí)現(xiàn)帶清除功能的輸入框(3)
- Android自定義EditText右側(cè)帶圖片控件
- Android中自定義的dialog中的EditText無(wú)法彈出輸入法解決方案
- Android如何自定義EditText光標(biāo)與下劃線顏色詳解
- Android實(shí)現(xiàn)自定義帶刪除功能的EditText實(shí)例
- Android開(kāi)發(fā)實(shí)現(xiàn)帶清空按鈕的EditText示例
相關(guān)文章
Android實(shí)現(xiàn)購(gòu)物車功能
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)購(gòu)物車功能的具體方法 ,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-02-02
APP添加CNZZ統(tǒng)計(jì)插件教程 Android版添加phonegap
這篇文章主要介紹了APP添加CNZZ統(tǒng)計(jì)插件教程,Android版添加phonegap,感興趣的小伙伴們可以參考一下2015-12-12
Android使用xml文件資源定義菜單實(shí)現(xiàn)方法示例
這篇文章主要介紹了Android使用xml文件資源定義菜單實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Android資源文件管理及xml配置自定義菜單相關(guān)操作技巧,需要的朋友可以參考下2019-03-03
Android用tabhost實(shí)現(xiàn) 界面切換,每個(gè)界面為一個(gè)獨(dú)立的activity操作
這篇文章主要介紹了Android用tabhost實(shí)現(xiàn) 界面切換,每個(gè)界面為一個(gè)獨(dú)立的activity操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09
Android項(xiàng)目實(shí)戰(zhàn)手把手教你畫圓形水波紋loadingview
這篇文章主要為大家詳細(xì)介紹了Android項(xiàng)目實(shí)戰(zhàn)手把手教你畫圓形水波紋loadingview,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-01-01
Android JNI處理圖片實(shí)現(xiàn)黑白濾鏡的方法
這篇文章主要介紹了Android JNI處理圖片實(shí)現(xiàn)黑白濾鏡的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-01-01
Android ViewPager實(shí)現(xiàn)動(dòng)畫切換效果
這篇文章主要為大家詳細(xì)介紹了Android ViewPager實(shí)現(xiàn)動(dòng)畫切換效果的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01
Android中g(shù)oogle Zxing實(shí)現(xiàn)二維碼與條形碼掃描
這篇文章主要介紹了Android中g(shù)oogle Zxing實(shí)現(xiàn)二維碼與條形碼掃描的相關(guān)資料,需要的朋友可以參考下2017-05-05
Android編程實(shí)現(xiàn)TextView垂直自動(dòng)滾動(dòng)功能【附demo源碼下載】
這篇文章主要介紹了Android編程實(shí)現(xiàn)TextView垂直自動(dòng)滾動(dòng)功能,詳細(xì)分析了Android TextView垂直自動(dòng)滾動(dòng)功能的實(shí)現(xiàn)步驟與布局、功能相關(guān)技巧,并附帶了demo源碼供讀者下載,需要的朋友可以參考下2017-02-02

