我有一个EditBox
允许用户输入数字的地方。但我的问题是如何限制用户在小数点前输入不超过三位数字,并且在小数点后不超过一位数字,例如:22.1
, 333.3
,34
但如果用户尝试输入6666.777
,则不允许他们输入.
请帮我解决这个问题。如果可能的话,举个例子
我有一个EditBox
允许用户输入数字的地方。但我的问题是如何限制用户在小数点前输入不超过三位数字,并且在小数点后不超过一位数字,例如:22.1
, 333.3
,34
但如果用户尝试输入6666.777
,则不允许他们输入.
请帮我解决这个问题。如果可能的话,举个例子
用于InputFilter
限制用户。这是另一个这样的话题。在 Android EditText 中限制小数位数
为你自己修改。我自己用过这个。
private class DecimalDigitsInputFilter implements InputFilter
{
Pattern mPattern;
public DecimalDigitsInputFilter(int digitsBeforeZero, int digitsAfterZero)
{
mPattern = Pattern.compile("[0-9]{0,3}\\.[0-9]{0,1}||[0-9]{1,3}");
}
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;
}
}
现在设置过滤器
youEditText.setFilters(new InputFilter[] {new DecimalDigitsInputFilter(3,1)});
private boolean decimalValidation(String str,int decimalDigitCount){
int positionFromLeft=INT_MAX;
try {
if (str.contains(".")) {
positionFromLeft = str.length() - str.indexOf(".") - 1;
}else positionFromLeft = 0;
} catch (Exception e) {
e.printStackTrace();
}
return positionFromLeft <= decimalDigitCount;
}
Note: str has to be number in string format.