国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android開發實現帶清空按鈕的EditText示例

2019-10-22 18:22:52
字體:
來源:轉載
供稿:網友

本文實例講述了Android開發實現帶清空按鈕的EditText。分享給大家供大家參考,具體如下:

一、效果圖:

Android,清空按鈕,EditText

二、具體代碼:

import android.content.Context;import android.graphics.drawable.Drawable;import android.support.v4.content.ContextCompat;import android.support.v4.graphics.drawable.DrawableCompat;import android.support.v7.widget.AppCompatEditText;import android.text.Editable;import android.text.TextWatcher;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View;import com.gdc.control.R;public class ClearableEditText extends AppCompatEditText implements View.OnTouchListener, View.OnFocusChangeListener, TextWatcher {  private Drawable       clearTextIcon;  private OnFocusChangeListener mOnFocusChangeListener;  private OnTouchListener    mOnTouchListener;  private boolean canClear = false;  public ClearableEditText(final Context context) {    super(context);    init(context);  }  public ClearableEditText(final Context context, final AttributeSet attrs) {    super(context, attrs);    init(context);  }  public ClearableEditText(final Context context, final AttributeSet attrs,      final int defStyleAttr) {    super(context, attrs, defStyleAttr);    init(context);  }  @Override  public void setOnFocusChangeListener(final OnFocusChangeListener      onFocusChangeListener) {    mOnFocusChangeListener = onFocusChangeListener;  }  @Override  public void setOnTouchListener(final OnTouchListener onTouchListener) {    mOnTouchListener = onTouchListener;  }  private void init(final Context context) {    final Drawable drawable = ContextCompat.getDrawable(context, R.drawable.ic_clear_edittext);    final Drawable wrappedDrawable = DrawableCompat.wrap(drawable);    DrawableCompat.setTint(wrappedDrawable, getCurrentHintTextColor());    clearTextIcon = wrappedDrawable;    clearTextIcon.setBounds(0, 0, clearTextIcon.getIntrinsicWidth(),        clearTextIcon.getIntrinsicHeight());    setClearIconVisible(false);    super.setOnTouchListener(this);    super.setOnFocusChangeListener(this);    addTextChangedListener(this);  }  @Override  public void onFocusChange(final View view, final boolean hasFocus) {    if (hasFocus) {      setClearIconVisible(getText().length() > 0);    } else {      setClearIconVisible(false);      setCanClear(true);    }    if (mOnFocusChangeListener != null) {      mOnFocusChangeListener.onFocusChange(view, hasFocus);    }  }  @Override  public boolean onTouch(final View view, final MotionEvent motionEvent) {    final int x = (int) motionEvent.getX();    if (x > getWidth() - getPaddingRight() - clearTextIcon.getIntrinsicWidth()) {      if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {        if (clearTextIcon.isVisible()) {          setError(null);          setText("");        } else if (isCanClear()) {          setCanClear(false);          setError(null);          setText("");        }      }      return true;    } else {      return mOnTouchListener != null && mOnTouchListener.onTouch(view,          motionEvent);    }  }  @Override  public final void onTextChanged(final CharSequence s, final int start, final  int before, final int count) {    if (isFocused()) {      setClearIconVisible(s.length() > 0);    }  }  @Override  public void beforeTextChanged(CharSequence s, int start, int count, int after) {  }  @Override  public void afterTextChanged(Editable s) {  }  private void setClearIconVisible(final boolean visible) {    clearTextIcon.setVisible(visible, false);    final Drawable[] compoundDrawables = getCompoundDrawables();    setCompoundDrawables(compoundDrawables[0], compoundDrawables[1], visible ?        clearTextIcon :        null, compoundDrawables[3]);  }  public synchronized boolean isCanClear() {    return canClear;  }  public synchronized void setCanClear(boolean canClear) {    this.canClear = canClear;  }}

希望本文所述對大家Android程序設計有所幫助。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 盱眙县| 泸州市| 白沙| 昔阳县| 绿春县| 磐石市| 广平县| 图木舒克市| 神木县| 云南省| 万载县| 恩施市| 富顺县| 义马市| 屯昌县| 赤壁市| 广丰县| 灵寿县| 任丘市| 永寿县| 田林县| 博兴县| 大同县| 新绛县| 胶南市| 鹤山市| 汕尾市| 东丽区| 金乡县| 南开区| 广灵县| 体育| 社会| 买车| 自治县| 咸阳市| 横峰县| 拉萨市| 石狮市| 大渡口区| 正安县|