我正在尝试编写一个可帮助你管理财务的应用程序。我正在使用一个EditText字段,用户可以在其中指定金额。
EditText
我将设置inputType为numberDecimal可以正常使用,除了允许人们输入数字(例如,123.122这对金钱而言并不完美)之外,它设置得很好。
inputType
numberDecimal
123.122
有没有办法将小数点后的字符数限制为两个?
这是一个示例InputFilter,它仅允许在小数点前最多4位,在小数点后最多1位。
价值观是允许的EditText:555.2,555,0.2
价值观是的EditText块:55555.2,055.2,555.42
InputFilter filter = new InputFilter() { final int maxDigitsBeforeDecimalPoint=4; final int maxDigitsAfterDecimalPoint=1; @Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { StringBuilder builder = new StringBuilder(dest); builder.replace(dstart, dend, source .subSequence(start, end).toString()); if (!builder.toString().matches( "(([1-9]{1})([0-9]{0,"+(maxDigitsBeforeDecimalPoint-1)+"})?)?(\\.[0-9]{0,"+maxDigitsAfterDecimalPoint+"})?" )) { if(source.length()==0) return dest.subSequence(dstart, dend); return ""; } return null; } }; mEdittext.setFilters(new InputFilter[] { filter });