Android 限制EditText输入小数点后面位数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/b7223058/article/details/77839556

遇到一需求,要限制EditText小数点输入位数,最后经过查阅资料,实现方法如下:

①xml中限制输入的类型:

android:inputType="numberDecimal"

②重写InputFilter

public class DecimalDigitsInputFilter implements InputFilter {

    private final int decimalDigits;

    /**
     * Constructor.
     *
     * @param decimalDigits maximum decimal digits
     */
    public DecimalDigitsInputFilter(int decimalDigits) {
        this.decimalDigits = decimalDigits;
    }

    @Override
    public CharSequence filter(CharSequence source,
                               int start,
                               int end,
                               Spanned dest,
                               int dstart,
                               int dend) {


        int dotPos = -1;
        int len = dest.length();
        for (int i = 0; i < len; i++) {
            char c = dest.charAt(i);
            if (c == '.' || c == ',') {
                dotPos = i;
                break;
            }
        }
        if (dotPos >= 0) {

            // protects against many dots
            if (source.equals(".") || source.equals(","))
            {
                return "";
            }
            // if the text is entered before the dot
            if (dend <= dotPos) {
                return null;
            }
            if (len - dotPos > decimalDigits) {
                return "";
            }
        }

        return null;
    }

}

③设置小数点位数,这里传进去的是2位

etInvoiceAmount.setFilters(new InputFilter[] {new DecimalDigitsInputFilter(2)});

猜你喜欢

转载自blog.csdn.net/b7223058/article/details/77839556