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

Android零基础入门第18节:EditText的属性和使用方法 EditText与TextView的最大区别在于:EditText可以接受用户输入。 阅读详情

这里写图片描述

我们可能面临这样的需求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时候解除监听,赋值后继续添加监听

mEditText.removeTextChangedListener(
【RK3588 NPU性能调优实战】多线程异步推理YOLOv5,榨干6TOPS算力 本文详细解析了如何在RK3588 NPU上通过多线程异步推理优化YOLOv5目标检测性能,实现6TOPS算力的最大化利用。通过线程池设计、流水线化帧处理及避开内存带宽瓶颈等技巧,将NPU利用率从30%提升至82%,帧率显著提高至61.2FPS。文章还提供了环境配置、代码实现及性能对比数据,助力开发者高效部署AI模型。 阅读详情

相关推荐

别再手搓SVG了!用Vue3+SVG.js快速搭建电力系统拓扑图(附完整代码)

本文介绍了如何利用Vue3和SVG.js实现电力系统拓扑图的低代码开发,通过组件化和响应式数据绑定,大幅提升开发效率。文章详细解析了SVG.js的核心功能,包括图形创建链式API、动态属性绑定和高级图形操作,并提供了断路器组件的完整实现代码。此外,还分享了性能优化策略和调试技巧,帮助开发者应对大规模拓扑图的挑战。

weixin_27717759的博客 353

告别命令行恐惧!用TBtools的MCScanX插件,5分钟搞定拟南芥和水稻的基因组共线性分析

本文介绍如何利用TBtools的MCScanX插件快速完成拟南芥和水稻的基因组共线性分析,无需命令行操作,5分钟即可生成专业可视化结果。通过图形化界面简化传统MCScanX的复杂流程,特别适合非生物信息背景的研究者,显著提升基因组数据分析效率。

dianzhuique8587的博客 376

ESP32连接PDM麦克风操作指南:新手入门必看

手把手教你如何将ESP32与PDM麦克风连接,采集音频数据并用于音频分类应用。内容涵盖硬件接线、代码配置及实际调试技巧,适合初学者快速上手esp32在声音识别场景中的使用。

weixin_42590539的博客 1329

深入解析UVM寄存器模型:reg2bus与bus2reg的隐式调用机制

本文深入解析了UVM寄存器模型中reg2bus与bus2reg函数的隐式调用机制。通过追踪一次寄存器访问的完整旅程,揭示了这两个关键函数是如何在uvm_reg_map和uvm_reg_predictor中被框架自动调用的,从而在抽象的寄存器操作与具体总线事务之间完成转换,并实现镜像值的自动更新。掌握此机制是高效调试和灵活应用UVM寄存器模型的基础。

weixin_29211309的博客 438

超详细YOLOv8实例分割全程概述:环境、训练、验证与预测详解

这篇博客提供了一个全面的指南,介绍了如何使用 Ultralytics YOLOv8-seg 系列模型进行对象检测和分割任务。内容从环境搭建、模型选择、训练、验证到预测的完整流程都有详细说明。为想要使用 YOLOv8-seg 系列模型的开发者提供了一站式的解决方案。它不仅涵盖了从环境配置到模型部署的详细步骤,还解释了如何解读和使用模型输出,使得用户能够根据自己的需求选择合适的模型,并能够有效地训练和评估它们。

CDBmax的博客 6万+

torchsparse安装

torchsparse安装以及安装失败原因分析和解决

AI_BING_的博客 1万+

《AI Coding手册:Claude Code、OpenAI Codex、OpenClaw深度解析与实战指南》

AI编码技术经历了从简单规则匹配到深度神经网络,再到当前智能体(Agent)架构的范式转变。第一阶段:静态代码补全(2010-2018)早期工具如IntelliSense、Emmet基于语法分析和固定模板提供代码提示。这类系统依赖预定义规则,缺乏语义理解能力,仅能处理局部代码片段。第二阶段:统计语言模型(2018-2020)以GPT-2、TabNine为代表,引入基于大规模代码训练的神经语言模型。

AI天才研究院 1033

芒果YOLO11改进146:OBB旋转检测头Head篇:即插即用|轻量化非对称多级压缩LOADH旋转检测头,原创改进适配YOLOv8高效检测头,检测头新颖改进,全网首发独一份

OBB旋转检测头Head篇:即插即用|轻量化非对称多级压缩LOADH旋转检测头,原创改进适配YOLOv8高效检测头,检测头新颖改进,全网首发独一份

包括YOLOv5、YOLOv7、YOLOv8等模型改进 641

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

上一篇: Android周选择日历的实现
下一篇: Gradle技巧(一)之生产测自动切换包名主机地址等
AndroidMsky
博客等级 码龄11年 270粉丝 45原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值