实现输入框右侧圆形X图标删除输入框内容,以及获取焦点消除hint
来源:互联网 发布:淘宝上架后过期不存在 编辑:程序博客网 时间:2024/06/06 00:32
package cn.mobile.renrentou.main.view.edittext;import cn.mobile.renrentou.R;import android.annotation.SuppressLint;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Rect;import android.graphics.drawable.Drawable;import android.util.AttributeSet;import android.util.Log;import android.view.MotionEvent;import android.widget.EditText;public class CustomEditText extends EditText {private Drawable dRight;private boolean dismissHintOnFocus = false;public CustomEditText(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);this.initAttrs(context, attrs);}public CustomEditText(Context context, AttributeSet attrs) {super(context, attrs);this.initAttrs(context, attrs);}public CustomEditText(Context context) {super(context);}@SuppressLint("Recycle")private void initAttrs(Context context, AttributeSet attrs) {TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.CustomEditText);dismissHintOnFocus = typedArray.getBoolean(R.styleable.CustomEditText_dismissHintOnFocus, true);}@Overridepublic void setCompoundDrawables(Drawable left, Drawable top,Drawable right, Drawable bottom) {if (right != null) {dRight = right;}super.setCompoundDrawables(left, top, right, bottom);}@Overridepublic boolean onTouchEvent(MotionEvent event) {if (event.getAction() == MotionEvent.ACTION_UP && dRight != null) {final int x = (int) event.getX();final int y = (int) event.getY();// check to make sure the touch event was within the bounds of theint w = getWidth();if (x <= w - this.getPaddingRight()&& x >= (w - this.getPaddingRight() - dRight.getIntrinsicWidth())) {this.setText("");// use this to prevent the keyboard from coming upevent.setAction(MotionEvent.ACTION_CANCEL);}}return super.onTouchEvent(event);}@Overrideprotected void onFocusChanged(boolean focused, int direction,Rect previouslyFocusedRect) {Log.d("CustomEdit", "onFocusChaged: " + dismissHintOnFocus);if (!dismissHintOnFocus) {super.onFocusChanged(focused, direction, previouslyFocusedRect);return;}String hint;if (focused) {CharSequence cs = this.getHint();cs = (cs == null) ? "" : cs;hint = cs.toString();if (null != hint && !"".equals(hint)) {this.setTag(hint);this.setHint("");} else {this.setTag("");}} else {hint = this.getTag().toString();this.setHint(hint);}super.onFocusChanged(focused, direction, previouslyFocusedRect);}@Overrideprotected void finalize() throws Throwable {dRight = null;super.finalize();}}内容很单一,参考别人的成品,但是报大量错误,经过修改后调试出在我的项目中不报错的版本,应用需要声明attrs属性,dismissHintOnFocus, 右侧x图片则声明drawableRight 可能 有许多冗余代码和bug,大家根据自己的应用自己调试即可。如果有错误或者有其他想法思路,请大家留言不吝赐教。尽量不要用wrap_content标记宽度。
0 0
- 实现输入框右侧圆形X图标删除输入框内容,以及获取焦点消除hint
- jQuery实现输入框获取焦点和失去焦点
- 输入框的获取焦点、失去焦点
- input输入框获取焦点、获取焦点位置、焦点设置
- java如何获取本地输入框焦点并向其输入内容
- 同一个td内的输入框右侧小图标居中
- html input文本框 输入框提示(hint)内容的实现
- 自定义View实现输入框后附加删除小图标
- 文本输入框默认不获取焦点
- 输入框获取焦点文字消失
- 手机页面输入框获取焦点
- AS3 搜索输入框获取焦点代码
- 输入框获取焦点,页面放大解决方法
- JS基础--输入框获取焦点
- 实现回车键切换输入框焦点
- Bootstrap 实现输入框中的 x 按钮删除文本值
- 简单的输入框右侧下拉实现,基于AutoCompleteTextView
- 用vc实现qq消息输入框内容的获取
- Birthday Cake——直线分割
- 作为一个程序员,我想,是该有自己的一个博客的时候了
- ACM题集以及各种总结大全!
- Struts 1之DispatchAction
- 拾遗语句
- 实现输入框右侧圆形X图标删除输入框内容,以及获取焦点消除hint
- socket 超时
- 2014一个屌丝程序猿的一天
- Triangle - Leetcode
- win10最新预览版9926使用评估
- 图像预处理:图像增强
- java中的foreach循环
- 当ArcGIS遇到AltiBase
- poj 2240 最短路