自定义EditText—带有清除功能,在显示多行文本时清除按钮位于整个EditText的右下角

本文介绍了如何自定义一个EditText,使其在显示多行文本时,清除按钮始终位于右下角。传统的做法是通过android:drawRight设置清除图标,但这会导致在多行文本时图标出现在中间。作者通过在onDraw函数中直接绘制清除图标解决了这个问题,提供了一种无需额外属性的解决方案。
摘要由CSDN通过智能技术生成

自定义带有清除功能的EditText不难,网上很多源码。简单来说,就是检测用户touch的位置,如果落在清除图标里面,则触发清除。这个清除图标是通过android:drawRight设置的。在EditText只有一行文本的时候,一切正常。可是如果EditText有多行文本时,清除图标就显示在中间(如下图)。


显然,清除图标显示在右下角更加合理。我定义了一个EditText来实现这个效果。效果图如下。实现思路是,抛弃使用drawRight来显示清除图标。而是直接在onDraw函数中绘制清除图标。这么做是因为drawRight的位置不好控制,看了下TextView的onDraw函数,想要改变drawRight的绘制位置很难。要特别说明的是,我是通过android:drawRight来获得清除图标的,获得之后即把drawRight设为null了,这样可以不用自定义属性了。


完整源码</

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值