美文网首页
工具类:限制EditText输入小数位数,按照金额格式进行输入

工具类:限制EditText输入小数位数,按照金额格式进行输入

作者: 心灵屋宿客 | 来源:发表于2018-03-02 16:24 被阅读0次

    APP里面经常需要设置EditText只能按照金额格式进行输入,正好整理一个工具类,日后可以直接拿去复制粘贴使用。嗯……懒惰使人进步!

    首先可以限制EditText的长度,如果是金额的话,一个小目标怎么也够了。嗯……算上小数点一共12位,那么就在EditText的属性下加上 android:maxLength="12"
    然后直接套用下面的工具类,把对应的EditText以及限制的位数直接传进去就好了。

        /**
         * 设置EditText为价钱输入模式
         *
         * @param editText 相应的EditText
         * @param digits   限制的小数位数
         */
        public static void setPriceMode(final EditText editText, final int digits) {
    //        设置输入类型为小数数字,允许十进制小数点提供分数值。
            editText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
    //        给EditText设置文本变动监听事件
            editText.addTextChangedListener(new TextWatcher() {
                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
    //                如果文本包括".",删除“.”后面超过2位后的数据
                    if (s.toString().contains(".")) {
                        if (s.length() - 1 - s.toString().indexOf(".") > digits) {
                            s = s.toString().subSequence(0,
                                    s.toString().indexOf(".") + digits + 1);
                            editText.setText(s);
                            editText.setSelection(s.length()); //光标移到最后
                        }
                    }
    //                未输入数字的情况下输入小数点时,个位数字自动补零
                    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 beforeTextChanged(CharSequence s, int start, int count, int after) {
    
                }
    
                @Override
                public void afterTextChanged(Editable s) {
    
                }
    
            });
        }
    

    相关文章

      网友评论

          本文标题:工具类:限制EditText输入小数位数,按照金额格式进行输入

          本文链接:https://www.haomeiwen.com/subject/yvsaxftx.html