android editText 控制输入最大值、保留两位小数、保留小数点前面两位数

常用方案:

1.在editText的监听addTextChangedListener中逻辑判断
2.使用editText的setFilters(new InputFilter[]),设置输入过滤。

保留小数点后两位方法:

1.设置editTextview的inputtype:

            editText.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL | InputType.TYPE_CLASS_NUMBER);

2.设置editText的输入过滤

editText.setFilters(new InputFilter[]{new InputFilter() {
                int decimalNumber = 2;//小数点后保留位数

                @Override
                //source:即将输入的内容 dest:原来输入的内容
                public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
                    String sourceContent = source.toString();
                    String lastInputContent = dest.toString();

                    //验证删除等按键
                    if (TextUtils.isEmpty(sourceContent)) {
                        return "";
                    }
                    //以小数点"."开头,默认为设置为“0.”开头
                    if (sourceContent.equals(".") && lastInputContent.length() == 0) {
                        return "0.";
                    }
                    //输入“0”,默认设置为以"0."开头
                    if (sourceContent.equals("0") && lastInputContent.length() == 0) {
                        return "0.";
                    }
                    //小数点后保留两位
                    if (lastInputContent.contains(".")) {
                        int index = lastInputContent.indexOf(".");
                        if (dend - index >= decimalNumber + 1) {
                            return "";
                        }

                    }
                    return null;
                }
            }});

3.在editText监听中设置小数点前的位数

editText.addTextChangedListener(new TextWatcher() {
            String temp;

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {


            }

            @Override
            public void afterTextChanged(Editable s) {
                temp = s.toString();
                if (TextUtils.equals(unit.getText(), "㎡")) {
                    int posDot = temp.indexOf(".");
                    //没有小数点,控制小数点前的位数
                    if (posDot <= 0) {
                        if (temp.length() <= 2) {
                            return;
                        } else {
                        //删除第二位后面的内容
                            s.delete(2, temp.length());
                            ToastUtil.showShort("测量值填写格式为0.01-99.99");
                            return;
                        }
                    }
                    if (temp.equals("0.00")) {
                    //输入“0.00”时清除内容
                        s.clear();
                        ToastUtil.showShort("测量值填写格式为整数1-9999");
                    }

                } else {
                    if (temp.startsWith("0")) {
                        s.clear();
                        ToastUtil.showShort("测量值填写格式为整数1-9999");
                    }
                    if (temp.length() >= 4) {
                        s.delete(4, temp.length());
                        ToastUtil.showShort("测量值填写格式为整数1-9999");
                    }
                }
            }
        });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值