我想制作一个 EditText 以采用十进制值,其中允许小数点后 2 位数字(可选)。值可以是:
xxxx
xxxx.x
xx.xx
.xx
.x
x.x
我已经尝试了很多在 S/O 中找到的解决方案,并且找到了合适的正则表达式来满足我的解决方案。但是没有一个能满足我的要求。一些解决方案满足要求但不允许在小数点之前进行编辑。假设,当edittext值为.xx时,小数点(.)前不能编辑。
谁能指出正确的解决方案。
注意:在 EditText 中使用 maxLength 属性。
最佳答案
试试这个,
public class DecimalDigitsInputFilter implements InputFilter {
Pattern mPattern;
public DecimalDigitsInputFilter(int digitsBeforeZero,int digitsAfterZero) {
mPattern=Pattern.compile("[0-9]{0," + (digitsBeforeZero-1) + "}+((\\.[0-9]{0," + (digitsAfterZero-1) + "})?)||(\\.)?");
}
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
Matcher matcher=mPattern.matcher(dest);
if(!matcher.matches())
return "";
return null;
}
}
并将过滤器设置为编辑文本
editText.setFilters(new InputFilter[] { new DecimalDigitsInputFilter(10, 2) });
关于android - 十进制输入过滤器android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37048790/