您的位置:首页 > 移动开发 > Android开发

Android开发之 EditText 上的清空按钮

2016-05-13 11:56 561 查看
Android开发时很多时候EditText 输入框都需要一些 X 一类的清空按钮,这样就必须重写EditText

public class UserPwdEditText extends EditText {

private final String TAG = "MyEditText";
private Drawable dRight;
private Rect rBounds;

public UserPwdEditText(Context paramContext) {
super(paramContext);
initEditText();
}

public UserPwdEditText(Context paramContext, AttributeSet paramAttributeSet) {
super(paramContext, paramAttributeSet);
initEditText();
}

public UserPwdEditText(Context paramContext,
AttributeSet paramAttributeSet, int paramInt) {
super(paramContext, paramAttributeSet, paramInt);
initEditText();
}

// 初始化edittext 控件
private void initEditText() {
setEditTextDrawable();
addTextChangedListener(new TextWatcher() { // 对文本内容改变进行监听
@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) {
UserPwdEditText.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;

}

/**
* 添加触摸事件 点击之后 出现 清空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);
}

/**
* 显示右侧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);
}

}


布局文件是这样的  要有一个图片
<com.xinzhifu.view.UserPwdEditText
android:id="@+id/login_edtPwd"
android:layout_width="match_parent"
android:layout_height="55dp"
android:background="@null"
android:drawableRight="@drawable/ic_delete"
android:ems="10"
android:hint="@string/pwd"
android:inputType="textPassword"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:singleLine="true"
android:textColorHint="#999999"
android:textSize="15sp" />
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  EditText清空