Android限制EditText输入金额小于1E,并最多2位小

2018-03-01  本文已影响269人  蓝小默
  1. 首先在EditText布局中设置inputType:
android:inputType="number|numberDecimal"
  1. 给EditText设置Filter:
//设置最多提现金额不能超过1E,并设置小数点后最多只能有2位
        mMoneyEdit.setFilters(new InputFilter[]{new InputFilter() {
            @Override
            public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
                String lastInputContent = dest.toString();
                //如果包含.
                if (lastInputContent.contains(".")) {
                    int index = lastInputContent.indexOf(".");
                    //如果光标在.的前面,那么判断.的位置是不是在8以后
                    if (dend < index) {
                        if (index >= 8) {
                            return "";
                        }
                    }
                    //如果光标在.后面大于3,说明小数位要超过2位了
                    if (dend - index >= 3) {
                        return "";
                    }

                } else {
                    //如果输入的字符不是.并且字符串的长度大于8,说明输入的整数部分已经达到了千万
                    if (!source.toString().equals(".") && lastInputContent.length() >= 8) {
                        return "";
                    }
                }
                //如果字符串长度大于11直接返回了
                if (lastInputContent.length() >= 11) {
                    return "";
                }

                return null;
            }
        }});
上一篇下一篇

猜你喜欢

热点阅读