您的位置:首页 > 其它

自定义EditText 实现带清空按钮的输入框

2014-08-12 16:15 579 查看
注:本文转载自csdn,其中实现清除功能所采用的方案比较可取。

原文如下:

项目要求:做出包含根据情况可变色的下划线,左侧有可变图标,右侧有可变删除标志的edittext,如图



记录制作过程:

第一版本:

效果图:



代码解释:

变量名 STATUS_FOCUSED,STATUS_UNFOCUSED,STATUS_ERROR 标示了三种状态,选中状况为蓝色,未选中状态为灰色,错误状态为红色。focusedDrawableId unfocusedDrawableId errorDrawableId 存放三种状态的图片,放置于最左侧。

canvas.drawLine(0, this.getHeight() - 1, this.getWidth(),this.getHeight() - 1, mPaint); //画editText最下方的线
setCompoundDrawablesWithIntrinsicBounds(left, null, del_btn, null); //放置左边的和右边的图片(左,上,右,下)
相当于 android:drawableLeft="" android:drawableRight=""

onTouchEvent 当手机点击时,第一个先走的函数,当点击右侧删除图标是清空edittext

setStatus 更具不同的状态,左边的图片不一样

存在的问题:

这版本虽然基本功能已经实现,但是不符合需求,设计中要求文本框中无文字时,右侧删除按钮不显示,不点击删除按钮,删除按钮要保持灰色,点击时才可以变蓝色。因此有了第二个版本

效果图:



比较关键的方法是:onTouchEvent

当进入界面,点击输入框,要判断输入框中是否已有文字,如果有则显示灰色的删除按钮,如果没有则不显示,如果点击了删除按钮,删除按钮变蓝色

存在的问题:

这个版本依旧存在问题,就是输入长度超过输入框,所画的线不会延伸,如图



解决办法:

w:获取控件长度

X:延伸后的长度

最终效果:



原文地址:http://blog.csdn.net/zwx622/article/details/38340991
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐