在edittext中你在输入1123456789过程中自动显示为1,123,456,789这种千分位格式的。那么我们该怎么做呢? 查阅Android edittext api发现它有这样一个方法addTextChangedListener,这个方法就是用来监听用户在输入过程中的事件监听,它会重写这几个方法:

editText.addTextChangedListener(new TextWatcher() {@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {// TODO Auto-generated method stub}@Overridepublic void beforeTextChanged(CharSequence s, int start, int count,int after) {// TODO Auto-generated method stub}@Overridepublic void afterTextChanged(Editable s) {// TODO Auto-generated method stub}});

不难发现。从字面意思理解我们需实现这个功能就需要在afterTextChanged()这个方法中写我们的逻辑代码,代码如下:

   @Overridepublic void afterTextChanged(Editable s) {// TODO Auto-generated method stubif (!StringUtils.touzi_ed_values22.equals(editText.getText().toString().trim().replaceAll(",",""))) {editText.setText(StringUtils.addComma(editText.getText().toString().trim().replaceAll(",",""),editText));editText.setSelection(StringUtils.addComma(editText.getText().toString().trim().replaceAll(",",""),editText).length());}}

StringUtils.addComma这个方法我是写成了一个帮助类,方便重复调佣

     public static String touzi_ed_values22 = "";
/**
* 在数字型字符串千分位加逗号
* @param str
* @param edtext
* @return sb.toString()
*/
public static String addComma(String str,EditText edtext){
touzi_ed_values22 = edtext.getText().toString().trim().replaceAll(",","");
boolean neg = false;
if (str.startsWith("-")){  //处理负数
str = str.substring(1);
neg = true;
}
String tail = null;
if (str.indexOf('.') != -1){ //处理小数点
tail = str.substring(str.indexOf('.'));
str = str.substring(0, str.indexOf('.'));
}
StringBuilder sb = new StringBuilder(str);
sb.reverse();
for (int i = 3; i < sb.length(); i += 4){
sb.insert(i, ',');
}
sb.reverse();
if (neg){
sb.insert(0, '-');
}
if (tail != null){
sb.append(tail);
}
return sb.toString();
}

代码中,我定义了一个静态的变量touzi_ed_values22是为了方便与activity中的StringUtils.touzi_ed_values22.equals(editText.getText().toString().trim().replaceAll(",",""))做判断,判断在输入过程中是否不同,也就是数值改变了,如果改变了,那么就会调用addComma()方法返回新的字符串数值赋值给edittext。

其中addComma中的touzi_ed_values22 = edtext.getText().toString().trim().replaceAll(",","");非常关键。它是为了不断获取当前数值与返回后的数值进行比较,如果没有这句代码。你的app将再edittext输入时就会出现卡死现象,因为你的touzi_ed_values22是永远为空的。在作比较的时候会进入该方法,就会无限赋值无限判断。

edittext再输入过程中显示金额千分位格式相关推荐

  1. word文档怎么给数字加千分符_Word中如何将文档中的金额数值设置为财务数字中的千分位格式...

    Word中如何将文档中的金额数值设置为财务数字中的千分位格式 时间:2015-06-10   作者:snow   来源:互联网 如图6‑19所示为某公司给省商务厅上报的2013年农产品现代流通综合试点 ...

  2. 在vue项目中千分位展示输入金额,获取金额千分位,金额大写的方法

    实现效果: 在用户输入完成input失焦的时候,input文本框中显示的是千分位格式的金额:在用户再次聚焦的input文本框时,文本框中展示的是正常的金额值,用户可以修改金额,失焦的时候再次千分位展示 ...

  3. jsp中如何使1和0再页面中显示为男和女

    jsp中如何使1和0再页面中显示 为男和女 具体代码如下 未转变前 转变后的代码与显示 这样很简单就完成了所需要的需求,后续如果有不懂的欢迎前来切磋

  4. js 金额千分位转换

    1.数字转千分位 ​ /** 默认返回当前数字千分位格式* 参数说明:* number:要格式化的数字* decimals:保留几位小数* dec_point:小数点符号* thousands_sep ...

  5. java 千分位格式话_Java 字符串小数转成千分位格式

    java中需要将字符串小数转成千分位格式显示,如下代码,原理是使用正则表达式对整数位进行千分位格式化,然后小数位拼接起来.为什么要这么麻烦的处理,是因为在android程序中使用的NumberForm ...

  6. 千分位格式C语言编程,金额数值的千分位显示格式

    场景描述: 涉及金额的场景下,直接显示数值对用户极不友好,特别是金额较大时,很难正确读出. 这时候就需要使用千分位进行辅助. 实现环境:白码低代码开发平台: 准备工作: 准备订单数据表,存储订单数据, ...

  7. php中格式化金额为千分位

    number_format() 函数 (PHP 4, PHP 5, PHP 7, PHP 8) number_format - 以千位分隔符方式格式化一个数字 用法 number_format($nu ...

  8. jquery实现金额千分位及人民币数字转大写

    //金额加千分位function formatAmount(num, precision, separator) {var parts;// 判断是否为数字if (!isNaN(parseFloat( ...

  9. js金额千分位 及 清除千分位

    好好学习 ,天天向上.Are you ready? 代码奉上!!!!!!!!! // 千分位thousandBit(row) {if (row) {const num= Number(row)cons ...

最新文章

  1. 田志刚:写文章的两个好处
  2. 小米Max怎么刷入开发版获得root超级权限
  3. 再有人问你Java内存模型是什么,就把这篇文章发给他
  4. The Fuctions of LWAPP
  5. loadrunner代理录制脚本方法介绍
  6. 访百度奥运logo设计师李兴钢:虚实之间最美的呈现
  7. redis数据库价格_阿里云数据库Redis购买流程
  8. 在python中可以用什么关键字来声明一个类_3. Python基础语法
  9. 【炮灰模型】 让数学建模来控制你的爱情,测测你是否是那个炮灰
  10. 项目引用android-support-v7-appcompat,如何使用android-support-v7-appcompat
  11. 【大厂笔试心得,你还不知道笔试的思路吗?】-- ACM模式篇、笔试题型介绍以及相关准备
  12. wireshark读写pcap文件_使用wireshark分析tcpdump出来的pcap文件
  13. 如何清空redis中的数据
  14. 边界类、控制类、实体类
  15. nmds与mds的区别_帮研网—科研共享平台——PCA、PCoA和NMDS有什么区别?
  16. 大三老狗的前端实习半年心得-经验分享
  17. 日语输入法(OpenWnn)的代码学习以及修改记录
  18. C51---PWM 脉冲宽度调制
  19. Vue组件,带标题的边框
  20. 谷歌收购 ReCaptcha 2009

热门文章

  1. Java设计模式-----Cglib动态代理(Cglib Proxy)
  2. 中国游戏行业发展简述
  3. Python处理CSV文件(三)
  4. DFT——INTEST/EXTEST Scan Mode
  5. 有关iphone表情符号的处理
  6. 线上营销如何提高转化率?做好这四个关键步骤
  7. 安装 KeyShot 流程
  8. 仿微信H5聊天系统即时通讯社交完整优化版搭建,IM聊天APP聊天交友客服,带安卓苹果端APP源码+视频教程
  9. word打开总有页眉的解决办法
  10. html+css网站首页实战