关于EditText的输入小数点计算问题

问题描述:

当edittext当中需要输入小数点的时候,进行计算的话会有一些列问题出现,例如:格式不对、小数点位置不对、小数点后输入0的问题

问题解决方法:

1)在输入框添加一个监听事件,会有3个方法重写

第一个:onTextChanged   (也是最重要的一个,一般操作都是在这个方法中编写)

//添加监听的edittext为gongzi  

//当你直接输入小数点的时候会自动加一个0.在前面

if (gognzi.getText().toString().indexOf(".") == 0) {
                    gognzi.setText("0" + gognzi.getText().toString());
                    gognzi.setSelection(gognzi.getText().toString().length());

//判断你的文字是否有效
                } else if (gognzi.getText().toString().indexOf("0") == 0 && gognzi.getText().toString().length() > 1 && gognzi.getText().toString().substring(1).indexOf(".") != 0) {
                    gognzi.setText(gognzi.getText().toString().substring(1));
                    gognzi.setSelection(gognzi.getText().toString().length());
                //下面这个判断是    判断你.后面能输入几个小数(2个)

} else {
                    String[] text = arg0.toString().split("\\.", 2);
                    if (text[0].length() > 11) {
                        text[0] = text[0].substring(0, 11);
                    }
                    if (text.length > 1 && text[1].length() > 2) {
                        text[1] = text[1].substring(0, 2);
                    }


                    String value = text[0];
                    if (text.length > 1) {
                        value += "." + text[1];
                    }


                    if (!value.equals(gognzi.getText().toString())) {
                        gognzi.setText(value);
                        Editable etext = gognzi.getText();
                        Selection.setSelection(etext, etext.length());
                    }

                }


2)第二个 afterTextChanged:

在这里面 的操作是:

            String text = s.toString();
            int len = s.toString().length();
            if (len == 1 && text.equals("0")) {
                s.clear();
            }

清空

3)第三个方法不用管


以上的方法就能轻松判断你输入框的 内容并不会报错


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值