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整数和小数位数过滤器(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
热门推荐
10 下雪宝宝生日祝福语简短
11 关于老师蛋糕祝福语简短
12 杭州老师祝福语毕业简短
13 外婆祝福语短句唯美简短
14 妹妹住院祝福语简短英文
15 娶嫂子的祝福语简短
16 结婚转账祝福语高级简短
17 寒露祝福语毕业寄语简短
18 孩子懂事生日祝福语简短