0

如何将 EditText 字段限制为只有一位小数。假设用户应该在(.)[decimal].

用户输入:1.92[Its invalid] 用户输入:1.9[Its Valid]

下面是我正在使用的正则表达式。

mPattern = Pattern.compile("[0-9]*+((\\.[0-9]{0," + (digitsAfterZero - 1) + "})?)||(\\.)?");

我的小数有问题,用户如果输入23.1很好,但同一个用户可以输入2.31.

如何限制用户在小数点后只输入一个数字/数字。

4

2 回答 2

3

使用正则表达式怎么样..

public class DecimalDigitsFilter implements InputFilter {

Pattern pattern;

public DecimalDigitsFilter(int digitsBeforeZero,int digitsAfterZero) {
    pattern=Pattern.compile("[0-9]{0," + (digitsBeforeZero-1) + "}+((\\.[0-9]{0," + (digitsAfterZero-1) + "})?)||(\\.)?");
}

@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned destination, int destinationStart, int destinationEnd) {

    Matcher matcher=pattern.matcher(destination);       
    if(!matcher.matches())
        return "";
    return null;
   }
}

然后称它为..

editText.setFilters(new InputFilter[] {new DecimalDigitsFilter(5,1)}); //5 before point and 1 after point.Change it as your need
于 2013-06-16T12:30:30.443 回答
0

将TextWatcher添加到 textView 并使用它的方法来防止在点后输入超过一个数字。

于 2013-06-16T11:46:57.140 回答