Android 限制edittext 整数和小数位数 过滤器(详解)
写了一个过滤器,根据需要限制edittext输入的整数和小数位,如下代码:
packageallone.verbank.apad.client.component; importandroid.text.InputFilter; importandroid.text.Spanned; /** * *@Title:ComponentDigitCtrlFilter.java *@Packageallone.verbank.apad.client.component *@Description:为了限制edit根据商品输入指定的位数和小数位 *@authorqiulinheqiu.linhe@allone.cn */ publicclassComponentDigitCtrlFilterimplementsInputFilter{ privatebooleanisJPY; privateintdigit; publicComponentDigitCtrlFilter(booleanisJPY,intdigit){ this.isJPY=isJPY; this.digit=digit; } @Override publicCharSequencefilter(CharSequencesource,intstart,intend,Spanneddest,intdstart,intdend){ //删除等特殊字符,直接返回 if("".equals(source.toString())){ returnnull; } StringoriValue=dest.toString(); StringBuffersb=newStringBuffer(oriValue); sb.append(source); StringnewValue=sb.toString(); String[]newValueVec=newValue.split("\\."); if(newValueVec.length==2){ doublenumber=Double.parseDouble(newValueVec[0]); booleannumberflag=true; if(isJPY){ numberflag=((number-999>0.000001)?false:true); }else{ numberflag=((number-99>0.000001)?false:true); } booleandigitflag=true; try{ StringdigitNumber=newValueVec[1]; digitflag=digitNumber.toCharArray().length>digit?false:true; }catch(Exceptionex){ digitflag=false; } if(numberflag&&digitflag){ returnsource; }else{ return""; } }else{ doublevalue=Double.parseDouble(newValue); if(isJPY){ returnvalue>999?"":source; }else{ returnvalue>99?"":source; } } //dest.subSequence(dstart,dend) } }
逻辑是判断传入的isJPY是否是要整数两位小数三位数的,然后对输入的数据进行限制,只需要将过滤器添加到对应的edittext控件即可,如下:stopEditText.setFilters(newInputFilter[]{newComponentDigitCtrlFilter(digit==2,digit)});
以上这篇Android限制edittext整数和小数位数过滤器(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。