2
我有以下要求。使用Java模式API在EdiText上过滤条件
用户只能在Android EditText上输入以下范围内的任何值,该值接受数字和小数而不是负数。
最小值:0
最大值:10个
中间值(最大值和最小值之间)可以是0.1,0.2,0.3 9.8 .....,9.9,10
我已经使用了Java模式来实现。
int digitsBeforeZero = 2;
int digitsAfterZero = 1;
public class DecimalDigitsInputFilter implements InputFilter {
private 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;
}
}
上述代码适用于以下条件。
i>对于值10及以上,它不接受任何小数,这是正确的。
ii>它接受小数点后的一个数字,范围为0.0 - 9.9,这也是正确的。
但它接受来自0,0.1,0.2 9.8 .....,9.9,10,11,12 99 ...........
如何限制值以值10与现有条件?
任何建议将有所帮助。
当我添加此代码作为输入过滤器,我无法对的EditText – chiranjib
添加任何东西请检查我的更新 –
有了更新的代码,我无法进入像1.2的值 – chiranjib