android 金额

 

 

  自己写了个特别简单可用的金额输入,如果大神有简单方法可以说一下,这个最大支持千万。

 

 

moneyEt.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) {

            }

            @Override
            public void afterTextChanged(Editable s) {
                String strbefore = s.toString();
                String strafter = "";
                if(strbefore.length() > 0){
                    int pointstart = strbefore.indexOf(".");
                    int pointend = strbefore.lastIndexOf(".");
                    if(pointstart != pointend && pointstart != -1 && pointend != -1){
                        moneyEt.setText(strbefore.substring(0,strbefore.length() - 1));
                        //光标移到末尾
                        Editable etext = moneyEt.getText();
                        Selection.setSelection(etext, etext.length());
                        if((pointend - pointstart) != 1){
                            strafter = strbefore.substring(0,strbefore.length() - 1);
                        }else {
                            strafter = strbefore.substring(0,strbefore.length() - 2);
                        }
                    }else if(pointstart == 0){
                        moneyEt.setText("");
                    }else {
                        Pattern pattern = Pattern.compile("^(([1-9]\\d{0,9})|0)(\\.\\d{1,2})?$");
                        Matcher matcher = pattern.matcher(s.toString());
                        if(!matcher.matches()){
                            if(!strbefore.substring(strbefore.length() - 1 ,strbefore.length()).equals(".") ){
                                moneyEt.setText(strbefore.substring(0,strbefore.length() - 1));
                                //光标移到末尾
                                Editable etext = moneyEt.getText();
                                Selection.setSelection(etext, etext.length());
                            }
                            strafter = strbefore.substring(0,strbefore.length() - 1);
                        }else {
                            strafter = strbefore;
                        }
                    }
                }
                Log.e("金额after","====> " + strafter);
            }
        });

 

 

 

 

 

其中strafter就是金额。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值