国产探花免费观看_亚洲丰满少妇自慰呻吟_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開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 滦南县| 荆门市| 林周县| 手游| 靖州| 新泰市| 醴陵市| 济源市| 元朗区| 闽清县| 深泽县| 白水县| 衡水市| 奉化市| 南靖县| 孝义市| 盘山县| 清涧县| 内江市| 江陵县| 巴林左旗| 靖州| 白城市| 古交市| 池州市| 杂多县| 双城市| 南靖县| 松溪县| 肇东市| 南昌市| 遂川县| 通许县| 淮南市| 砀山县| 和田县| 博爱县| 延川县| 侯马市| 临海市| 揭西县|