限制Android EditText中的小数位数

发布于 2021-02-02 22:49:07

我正在尝试编写一个可帮助你管理财务的应用程序。我正在使用一个EditText字段,用户可以在其中指定金额。

我将设置inputTypenumberDecimal可以正常使用,除了允许人们输入数字(例如,123.122这对金钱而言并不完美)之外,它设置得很好。

有没有办法将小数点后的字符数限制为两个?

关注者
0
被浏览
303
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    这是一个示例InputFilter,它仅允许在小数点前最多4位,在小数点后最多1位。

    价值观是允许的EditText:555.2,555,0.2

    价值观是的EditText块:55555.2,055.2,555.42

            InputFilter filter = new InputFilter() {
            final int maxDigitsBeforeDecimalPoint=4;
            final int maxDigitsAfterDecimalPoint=1;
    
            @Override
            public CharSequence filter(CharSequence source, int start, int end,
                    Spanned dest, int dstart, int dend) {
                    StringBuilder builder = new StringBuilder(dest);
                    builder.replace(dstart, dend, source
                            .subSequence(start, end).toString());
                    if (!builder.toString().matches(
                            "(([1-9]{1})([0-9]{0,"+(maxDigitsBeforeDecimalPoint-1)+"})?)?(\\.[0-9]{0,"+maxDigitsAfterDecimalPoint+"})?"
    
                            )) {
                        if(source.length()==0)
                            return dest.subSequence(dstart, dend);
                        return "";
                    }
    
                return null;
    
            }
        };
    
        mEdittext.setFilters(new InputFilter[] { filter });
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看