• 再谈EditText只能输入金额


    上次写了一篇EditText只能输入金额的博客,后来发现一个bug,当还未输入数字的情况下输入小数点程序就崩了,我去测了一下支付宝,看看会怎么样,我先输入小数点,程序正常,我再输入数字,可以正常输入,但是不够完美,因为”.562“是多少钱呢,我要补充的就是当还未输入数字的情况下输入小数点时,个位数字自动补零。鉴于那个代码比较冗余我就又去网上查资料,综合下来总结了一个比较好的实现方式,给EditText添加监听。

    public class Money {
        public static void setPricePoint(final EditText editText) {
     
            editText.addTextChangedListener(new TextWatcher() {
                @Override
                public void onTextChanged(CharSequence s, int start, int before,
                                          int count) {
                    if (s.toString().contains(".")) {
                        if (s.length() - 1 - s.toString().indexOf(".") > 2) {
                            s = s.toString().subSequence(0,
                                    s.toString().indexOf(".") + 3);
                            editText.setText(s);
                            editText.setSelection(s.length());
                        }
                    }
                    if (s.toString().trim().substring(0).equals(".")) {
                        s = "0" + s;
                        editText.setText(s);
                        editText.setSelection(2);
                    }
                    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 beforeTextChanged(CharSequence s, int start, int count, int after) {
     
                }
                @Override
                public void afterTextChanged(Editable s) {
                    // TODO Auto-generated method stub
                }
            });
        }
    }

    使用起来就很简单了

    tv_price = (EditText)findViewById(R.id.tv_price);
    Money.setPricePoint(tv_price);

    转自:http://blog.it985.com/15238.html

  • 相关阅读:
    无所不能的Ant 【转】
    fstream的文件操作
    dos下的for命令详解(zz)
    c++中vector的用法总结
    学习Git上
    IE下的document.onclick问题
    第一次面试实习感触
    大数据概述
    红旗
    词法分析
  • 原文地址:https://www.cnblogs.com/H-BolinBlog/p/5756361.html
Copyright © 2020-2023  润新知