Android实现仿IOS带清空功能的文本输入框 推荐
2013-05-07 21:07
621 查看
/** * @类名:ClearableEditText * @功能描述: * @作者: William Xu * @创建日期:2013-4-13 * @修改人: * @修改日期: * @修改备注: * @版本号:1.0 */ public class ClearableEditText extends EditText implements OnFocusChangeListener, TextWatcher { private Drawable xD; public ClearableEditText(Context context) { super(context); init(); } public ClearableEditText(Context context, AttributeSet attrs) { super(context, attrs); init(); } public ClearableEditText(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(); } private void init() { xD = getCompoundDrawables()[2]; if (xD == null) { xD = getResources() .getDrawable(R.drawable.search_clear); } xD.setBounds(0, 0, xD.getIntrinsicWidth(), xD.getIntrinsicHeight()); setClearIconVisible(false); super.setOnFocusChangeListener(this); addTextChangedListener(this); } @Override public void setOnFocusChangeListener(OnFocusChangeListener f) { this.f = f; } private OnFocusChangeListener f; @Override public boolean onTouchEvent(MotionEvent event) { if (getCompoundDrawables()[2] != null) { if (event.getAction() == MotionEvent.ACTION_UP) { boolean tappedX = event.getX() > (getWidth() - getPaddingRight() - xD.getIntrinsicWidth()); if (tappedX) { setText(""); event.setAction(MotionEvent.ACTION_CANCEL); } } } return super.onTouchEvent(event); } @Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) { setClearIconVisible(getText().length() > 0); } else { setClearIconVisible(false); } if (f != null) { f.onFocusChange(v, hasFocus); } } protected void setClearIconVisible(boolean visible) { Drawable x = visible ? xD : null; setCompoundDrawables(getCompoundDrawables()[0], getCompoundDrawables()[1], x, getCompoundDrawables()[3]); } @Override public void onTextChanged(CharSequence s, int start, int count, int after) { setClearIconVisible(s.length() > 0); } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub } }
相关文章推荐
- android实现的计算器功能,可以加减乘除;可以倒退,可以清空文本,大家参考使用吧
- 原生javascript实现分享到朋友圈功能 支持ios和android
- Android登陆界面实现-支持输入框清楚和震动效果功能
- android 简单的两步实现Play上的文本伸缩功能
- android实现文本复制到剪切板功能(ClipboardManager)
- [置顶] React Native实现第三方分享、登录功能(Android,IOS双平台)
- Android 带清除功能的输入框控件ClearEditText,仿IOS的输入框
- Android登陆界面实现-支持输入框清楚和震动效果功能
- cocos2dx 实现文字的一键复制功能(IOS、Android)
- 实现textbox对输入内容的自动检索功能,效果相当于百度首页的文本输入框
- Android 图片裁剪功能实现详解(类似QQ自定义头像裁剪) 推荐
- iOS 和 Android 推送功能实现
- 一个功能,两个平台,三种语言 -(iOS,Swift,Android)App代码实现对比篇
- Android 带清除功能的输入框控件ClearEditText,仿IOS的输入框
- Android- WebView 在文本上实现 复制粘贴功能
- android实现文本复制到剪切板功能(ClipboardManager)
- android实现复制粘贴一项文本功能
- Android 带清除功能的输入框控件ClearEditText,仿IOS的输入框
- Android清空编辑框数据功能的实现
- android实现文本复制到剪切板功能(ClipboardManager)