Android自定义可点击清空的文本编辑框ClearableEditText

        在app中经常可以见到这种需求:输入框右侧有一个清空的按钮,点击可以清空当前已输入的内容,方便用户操作。当然使用一个线形布局,左边是输入框,右边是清空按钮,这样组合起来也能实现这种效果,但是如果app里面有多处都有相同的需求,则需要多次复制粘贴,比较麻烦,也不够优雅。所以考虑用自定义控件实现。

        因为是在输入框的基础上添加清空的功能,所以考虑直接继承EditText:

右侧的清空按钮则使用drawableRight属性去指定,在init()方法中去获取drawable并设置点击事件:

由于drawable无法直接设置onClickListener(),考虑通过重写onTouchEvent()去实现:

        getTotalPaddingRight()这个方法是获取包括right drawable在内的右侧内间距。在该区域的点击事件当作清空去处理。最后一点小优化,在当前edittext有焦点时才显示清空按钮,失去焦点时将按钮隐藏:

        设置drawable隐藏可见的方法:

完整代码:https://github.com/huangxshuo/ClearableEditText

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容