如何限制用户在EditBox中输入值

时间:2012-04-23 09:59:08

标签: android

实际上我有一个EditBox我允许用户输入数字。但我的问题是如何限制用户在小数点前输入不超过三位数而不是小数点后的一位数,例如:22.1,333.3,34 ..但如果用户尝试输入6666.777则不会允许他们进入。

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

2 个答案:

答案 0 :(得分:2)

使用InputFilter限制用户。这是另一个这样的话题。 Limit Decimal Places in 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)});

答案 1 :(得分: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.