一行代码实现EditText数字输入逗号和位数限制

这篇博客介绍了一种实现EditText输入限制的方法,包括3位自动加逗号、自定义输入位数限制,并支持在字符串任意位置的增删改。文章详细解释了实现过程中的难点和解决策略,并提供了工具类代码。读者可以关注作者,加入交流群,或在GitHub上查看完整代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里写图片描述

我们可能面临这样的需求EditText输入限制n位整数,n位小数。有些产品,提出了整数要根据三个数来加逗号。笔者也是找了半天没有找到太好的工具类,于是自己封装了一个。

实现功能:
1.3位自动加逗号
2.自定义限制输入位数
3.支持在串的任意位置增加,修改,删除。
4.对空和有内容进行回调封装
5.对输入结束后进行回调封装

使用方法:

//10位整数两位小数
EditTextTools editTextTools= new EditTextTools(mEditText,10,2);

如果需要45两个需求的回调:

editTextTools.setOnEmptyListener(new EditTextTools.OnEmptyListener() {
            @Override
            public void onEmpty() {

            }

            @Override
            public void onNoEmpty() {

            }
        });
        editTextTools.setOnBeforeAfterChangedListener(new EditTextTools.OnBeforeAfterChangedListener() {
            @Override
            public void onBeforeAfterChanged(String s) {

            }
        });

解释一下45两个需求为什么会存在,
4因为我们可能对数字采用特殊字体等,但是如果有hint那么汉字是没有被加入特殊字体库的,所以空的时候就用默认字体,有输入可能用特殊的自定义字体(一套数字英文自定义字体文件大小还是可以接受的)。
5我们输入的数据可能会想实时保存下来那我我们可能需要对串中的逗号进行剔除等,所以定义了这个借口。

然后我们罗列一下几个难点:
1.输入修改位置计算,因为我们可能自己增加逗号进去,所以位置可能会错乱。
2.如何避免多次回调TextWatcher
3.如何处理好数字串的限制长度和增加字符

12可能都是Android的一些技巧,

1.通过onTextChanged(CharSequence s, int start, int before, int count)
几个回调的值,来处理setSelection。

2.我们在给EditText赋值text时候解除监听,赋值后继续添加监听

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值