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位,小数点后两位
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。