Android 限制edittext 整数和小数位数 过滤器(详解)
程序员文章站
2022-05-20 22:01:09
写了一个过滤器,根据需要限制edittext输入的整数和小数位,如下代码:
package allone.verbank.apad.client.componen...
写了一个过滤器,根据需要限制edittext输入的整数和小数位,如下代码:
package allone.verbank.apad.client.component; import android.text.inputfilter; import android.text.spanned; /** * * @title: componentdigitctrlfilter.java * @package allone.verbank.apad.client.component * @description: 为了限制edit根据商品输入指定的位数和小数位 * @author qiulinhe qiu.linhe@allone.cn */ public class componentdigitctrlfilter implements inputfilter { private boolean isjpy; private int digit; public componentdigitctrlfilter(boolean isjpy, int digit) { this.isjpy = isjpy; this.digit = digit; } @override public charsequence filter(charsequence source, int start, int end, spanned dest, int dstart, int dend) { // 删除等特殊字符,直接返回 if ("".equals(source.tostring())) { return null; } string orivalue = dest.tostring(); stringbuffer sb = new stringbuffer(orivalue); sb.append(source); string newvalue = sb.tostring(); string[] newvaluevec = newvalue.split("\\."); if (newvaluevec.length == 2) { double number = double.parsedouble(newvaluevec[0]); boolean numberflag = true; if (isjpy) { numberflag = ((number - 999 > 0.000001) ? false : true); } else { numberflag = ((number - 99 > 0.000001) ? false : true); } boolean digitflag = true; try { string digitnumber = newvaluevec[1]; digitflag = digitnumber.tochararray().length > digit ? false : true; } catch (exception ex) { digitflag = false; } if (numberflag && digitflag) { return source; } else { return ""; } } else { double value = double.parsedouble(newvalue); if (isjpy) { return value > 999 ? "" : source; } else { return value > 99 ? "" : source; } } // dest.subsequence(dstart, dend) } }
逻辑是判断传入的isjpy是否是要整数两位小数三位数的,然后对输入的数据进行限制,只需要将过滤器添加到对应的edittext控件即可,如下:stopedittext.setfilters(new inputfilter[] { new componentdigitctrlfilter(digit == 2, digit) });
以上这篇android 限制edittext 整数和小数位数 过滤器(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
上一篇: 纸刀也能伤人?揭秘我国清末时期三大妖术!
下一篇: matlab图像局部放大算法