EditText只能输入小数点后2位

在开发中可能遇到需要限制输入框位数的问题,整理解决代码如下:

//输入框监听,只能输入小数点后两位
    public static void setEditTextChangeListen(final EditText editText){
        try {
            editText.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {

                }

                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
                    //限制输入小数点后两位
                    if (s.toString().contains(".")) {
                        //如果要限制输入的小数点后的位数,只需更改数字“2”
                        if (s.length() - 1 - s.toString().indexOf(".") > 2) {
                            s = s.toString().subSequence(0,
                                    s.toString().indexOf(".") + 3);
                            editText.setText(s);
                            editText.setSelection(s.length());
                        }
                    }
                    //如果输入的第一个字符是“.”那么改成“0.”
                    if (s.toString().trim().substring(0).equals(".")) {
                        s = "0" + s;
                        editText.setText(s);
                        editText.setSelection(2);
                    }

                    //如果输入的第一个字符是“0”那么输入的第二个字符只能是“.”
                    if (s.toString().startsWith("0")
                            && s.toString().trim().length() > 1) {
                        if (!s.toString().substring(1, 2).equals(".")) {
                            editText.setText(s.subSequence(0, 1));
                            editText.setSelection(1);
                            return;
                        }
                    }
                }

                @Override
                public void afterTextChanged(Editable s) {

                }
            });
        } catch (Exception e) {
            LogUtil.e(Util.class, "setEditTextChangeListen()", e);
        }
    }

猜你喜欢

转载自my.oschina.net/u/2438447/blog/1142839