Android EditText限制输入整数和小数的位数的方法示例
直接上代码
新建DecimalInputTextWatcher类继承TextWatcher(代码可直接复制使用)
importandroid.text.Editable;
importandroid.text.InputFilter;
importandroid.text.TextWatcher;
importandroid.widget.EditText;
/**
*EditText限制输入整数和小数的位数
*默认整数位无限制,小数位最多2位
*/
publicclassDecimalInputTextWatcherimplementsTextWatcher{
privatestaticfinalintDEFAULT_DECIMAL_DIGITS=2;//默认小数的位数2位
privateEditTexteditText;
privateintdecimalDigits;//小数的位数
privateintintegerDigits;//整数的位数
publicDecimalInputTextWatcher(EditTexteditText){
this.editText=editText;
this.decimalDigits=DEFAULT_DECIMAL_DIGITS;
}
publicDecimalInputTextWatcher(EditTexteditText,intdecimalDigits){
this.editText=editText;
if(decimalDigits<=0)
thrownewRuntimeException("decimalDigitsmust>0");
this.decimalDigits=decimalDigits;
}
publicDecimalInputTextWatcher(EditTexteditText,intintegerDigits,intdecimalDigits){
this.editText=editText;
if(integerDigits<=0)
thrownewRuntimeException("integerDigitsmust>0");
if(decimalDigits<=0)
thrownewRuntimeException("decimalDigitsmust>0");
this.decimalDigits=decimalDigits;
this.integerDigits=integerDigits;
}
@Override
publicvoidbeforeTextChanged(CharSequences,intstart,intcount,intafter){
}
@Override
publicvoidonTextChanged(CharSequences,intstart,intbefore,intcount){
}
@Override
publicvoidafterTextChanged(Editableeditable){
Strings=editable.toString();
editText.removeTextChangedListener(this);
if(s.contains(".")){
if(integerDigits>0){
editText.setFilters(newInputFilter[]{newInputFilter.LengthFilter(integerDigits+decimalDigits+1)});
}
if(s.length()-1-s.indexOf(".")>decimalDigits){
s=s.substring(0,
s.indexOf(".")+decimalDigits+1);
editable.replace(0,editable.length(),s.trim());//不输入超出位数的数字
}
}else{
if(integerDigits>0){
editText.setFilters(newInputFilter[]{newInputFilter.LengthFilter(integerDigits+1)});
if(s.length()>integerDigits){
s=s.substring(0,integerDigits);
editable.replace(0,editable.length(),s.trim());
}
}
}
if(s.trim().equals(".")){//小数点开头,小数点前补0
s="0"+s;
editable.replace(0,editable.length(),s.trim());
}
if(s.startsWith("0")&&s.trim().length()>1){//多个0开头,只输入一个0
if(!s.substring(1,2).equals(".")){
editable.replace(0,editable.length(),"0");
}
}
editText.addTextChangedListener(this);
}
}
使用
editText.addTextChangedListener(newDecimalInputTextWatcher(weight,3,5)); //限制输入位数:整数3位,小数点后两位
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。