0

我有一个EditBox允许用户输入数字的地方。但我的问题是如何限制用户在小数点前输入不超过三位数字,并且在小数点后不超过一位数字,例如:22.1, 333.334但如果用户尝试输入6666.777,则不允许他们输入.

请帮我解决这个问题。如果可能的话,举个例子

4

2 回答 2

2

用于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)});
于 2012-04-23T10:05:34.560 回答
0
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.
于 2019-04-17T07:25:55.600 回答