1. 程式人生 > >Android開發之 EditText 上的清空按鈕

Android開發之 EditText 上的清空按鈕

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" />