Android 自定義EditText輸入框帶清空按鈕
Android 自定義EditText輸入框帶清空按鈕
當(dāng)用戶輸入字符后 EditText會(huì)自動(dòng)在輸入框的內(nèi)部右側(cè)出現(xiàn)刪除按鈕
重寫EditText達(dá)到簡(jiǎn)化布局的效果
效果圖:

繼承EditText
package com.example.myedittexttest;
import android.content.Context;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.EditText;
public class MyEditText extends EditText {
private final String TAG = "MyEditText";
private Drawable dRight;
private Rect rBounds;
public MyEditText(Context paramContext) {
super(paramContext);
initEditText();
}
public MyEditText(Context paramContext, AttributeSet paramAttributeSet) {
super(paramContext, paramAttributeSet);
initEditText();
}
public MyEditText(Context paramContext, AttributeSet paramAttributeSet, int paramInt) {
super(paramContext, paramAttributeSet, paramInt);
initEditText();
}
// 初始化edittext 控件
private void initEditText() {
setEditTextDrawable();
addTextChangedListener(new TextWatcher() { // 對(duì)文本內(nèi)容改變進(jìn)行監(jiān)聽
@Override
public void afterTextChanged(Editable paramEditable) {
}
@Override
public void beforeTextChanged(CharSequence paramCharSequence, int paramInt1, int paramInt2, int paramInt3) {
}
@Override
public void onTextChanged(CharSequence paramCharSequence, int paramInt1, int paramInt2, int paramInt3) {
MyEditText.this.setEditTextDrawable();
}
});
}
// 控制圖片的顯示
public void setEditTextDrawable() {
if (getText().toString().length() == 0) {
setCompoundDrawables(null, null, null, null);
} else {
setCompoundDrawables(null, null, this.dRight, null);
}
}
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
this.dRight = null;
this.rBounds = null;
}
/**
* 添加觸摸事件 點(diǎn)擊之后 出現(xiàn) 清空editText的效果
*/
@Override
public boolean onTouchEvent(MotionEvent paramMotionEvent) {
if ((this.dRight != null) && (paramMotionEvent.getAction() == 1)) {
this.rBounds = this.dRight.getBounds();
int i = (int) paramMotionEvent.getRawX();// 距離屏幕的距離
// int i = (int) paramMotionEvent.getX();//距離邊框的距離
if (i > getRight() - 3 * this.rBounds.width()) {
setText("");
paramMotionEvent.setAction(MotionEvent.ACTION_CANCEL);
}
}
return super.onTouchEvent(paramMotionEvent);
}
/**
* 顯示右側(cè)X圖片的
*
* 左上右下
*/
@Override
public void setCompoundDrawables(Drawable paramDrawable1, Drawable paramDrawable2, Drawable paramDrawable3, Drawable paramDrawable4) {
if (paramDrawable3 != null)
this.dRight = paramDrawable3;
super.setCompoundDrawables(paramDrawable1, paramDrawable2, paramDrawable3, paramDrawable4);
}
}
XML布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<com.example.myedittexttest.MyEditText
android:id="@+id/edit_text"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:layout_marginTop="50dp"
android:background="#88aaff"
android:drawableRight="@drawable/edit_clear"
android:textCursorDrawable="@null" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/edit_text"
android:layout_marginTop="84dp"
android:layout_toRightOf="@+id/textView1"
android:text="Button" />
</RelativeLayout>
XML中的屬性簡(jiǎn)介:
顯示右側(cè)的X 按鈕:
android:drawableRight="@drawable/edit_clear"
設(shè)置光標(biāo)的顏色 設(shè)置@null 表示光標(biāo)的顏色和輸入框的字體顏色相同
android:textCursorDrawable="@null"
顯示隱藏光標(biāo)
android:cursorVisible="true"http://顯示 android:cursorVisible="false"http://隱藏
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
Android快速實(shí)現(xiàn)發(fā)送郵件實(shí)例
本篇文章主要介紹了Android快速實(shí)現(xiàn)發(fā)送郵件實(shí)例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2017-04-04
[Alibaba-ARouter]淺談簡(jiǎn)單好用的Android頁(yè)面路由框架
這篇文章主要介紹了[Alibaba-ARouter]淺談簡(jiǎn)單好用的Android頁(yè)面路由框架,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11
Android 使用 SharedPreferences 保存少量數(shù)據(jù)的實(shí)現(xiàn)代碼
這篇文章主要介紹了Android 使用 SharedPreferences 保存少量數(shù)據(jù)的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04
Android開發(fā)之滑動(dòng)圖片輪播標(biāo)題焦點(diǎn)
這篇文章主要介紹了Android開發(fā)之滑動(dòng)圖片輪播標(biāo)題焦點(diǎn)的相關(guān)資料,需要的朋友可以參考下2016-05-05
快速調(diào)試Android應(yīng)用系統(tǒng)修改ro.debuggable屬性的兩種方式
這篇文章主要為大家介紹了快速調(diào)試Android應(yīng)用系統(tǒng)修改ro.debuggable屬性的兩種方式,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10
Android開發(fā)之ScrollView的滑動(dòng)監(jiān)聽
這篇文章主要介紹了Android開發(fā)之ScrollView的滑動(dòng)監(jiān)聽,非常不錯(cuò),介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-08-08
Android基于TextView實(shí)現(xiàn)跑馬燈效果
這篇文章主要為大家詳細(xì)介紹了Android基于TextView實(shí)現(xiàn)跑馬燈效果的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03
Android筆記之:在ScrollView中嵌套ListView的方法
本篇文章是對(duì)Android中在ScrollView中嵌套ListView的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
Android開發(fā)實(shí)現(xiàn)模仿微信小窗口功能【Dialog對(duì)話框風(fēng)格窗口】
這篇文章主要介紹了Android開發(fā)實(shí)現(xiàn)模仿微信小窗口功能,結(jié)合實(shí)例形式分析了Android實(shí)現(xiàn)微信風(fēng)格Dialog對(duì)話框窗口相關(guān)功能與布局操作技巧,需要的朋友可以參考下2019-03-03

