我这里介绍两种控制输入方法。

1.(参考链接)

 etInputMoney.setFilters(new InputFilter[]{new PointInputFilter()});public class PointInputFilter implements InputFilter {    private static final int DECIMAL_DIGITS = 2;//小数的位数    private static final int INTEGER_DIGITS = 6;//整数位的位数    private static final int TOTAL_DIGITS = 9; //整数部分 + “小数点” + 小数部分    private int currentLimitDigits = INTEGER_DIGITS;    @Override    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {        // 删除等特殊字符,直接返回        if ("".equals(source.toString())) {            return null;        }        /*        如果想要直接禁止复制粘贴多个数字,直接这边限制。        if(source.length() > 1){            return "";        }*/        String dValue = dest.toString();        String[] splitArray = dValue.split("\\.");        switch (splitArray.length) {            case 1:                if (dValue.indexOf(".") != -1) {                    currentLimitDigits = TOTAL_DIGITS;                } else {                    currentLimitDigits = INTEGER_DIGITS;                }                if (source.length() > 1) {                    String sValue = source.toString();                    String[] subSplitArray = sValue.split("\\.");                    switch (subSplitArray.length) {                        case 1:                            if (source.length() + dest.length() > currentLimitDigits) {                                return source.subSequence(0, currentLimitDigits - dest.length());                            }                            break;                        case 2:                            String content = "";                            if (dstart == dest.length()) {                                if (subSplitArray[0].length() + dest.length() > INTEGER_DIGITS) {                                    content += subSplitArray[0].subSequence(0, INTEGER_DIGITS - dest.length());                                } else {                                    content += subSplitArray[0];                                }                                if (subSplitArray[1].length() > DECIMAL_DIGITS) {                                    content += "."+ subSplitArray[1].substring(0, DECIMAL_DIGITS);                                } else {                                    content += "."+ subSplitArray[1];                                }                                return content;                            } else {                                if (subSplitArray[0].length() + dest.length() > INTEGER_DIGITS) {                                    content += subSplitArray[0].subSequence(0, INTEGER_DIGITS - dest.length());                                } else {                                    content += subSplitArray[0];                                }                            }                            return content;                        default:                            break;                    }                }                if (splitArray[0].length() >= currentLimitDigits && !".".equals(source.toString())) {                    return "";                }                break;            case 2:                String integerValue = splitArray[0];                String dotValue = splitArray[1];                int dotIndex = dValue.indexOf(".");                if (dstart <= dotIndex) {                    if (integerValue.length() >= INTEGER_DIGITS) {                        return "";                    } else if (source.length() + integerValue.length() >= INTEGER_DIGITS) {                        return source.subSequence(0, INTEGER_DIGITS - integerValue.length());                    }                } else {                    if (dotValue.length() >= DECIMAL_DIGITS) {                        return "";                    } else if (source.length() + dotValue.length() >= DECIMAL_DIGITS) {                        return source.subSequence(0, DECIMAL_DIGITS - dotValue.length());                    }                }                break;            default:                break;        }        return null;    }}

2()

etInputMoney.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);                        etInputMoney.setText(s);                        etInputMoney.setSelection(s.length());                    }                }                if (s.toString().trim().substring(0).equals(".")) {                    s = "0" + s;                    etInputMoney.setText(s);                    etInputMoney.setSelection(2);                }                if (s.toString().startsWith("0")                        && s.toString().trim().length() > 1) {                    if (!s.toString().substring(1, 2).equals(".")) {                        etInputMoney.setText(s.subSequence(0, 1));                        etInputMoney.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            }        });

后面还有手机号码,身份证等的限制,请关注后续文章,或给我留言,我会抽时间补充

 

 

更多相关文章

  1. Android 限制edittext 整数和小数位数 过滤器
  2. 获取定位数据
  3. Android 保留两位小数点的4种方法
  4. DecimalFormat 实现保留小数点位数及四舍五入
  5. Android Edittext设置负数以及小数
  6. EditText要求输入整数数字且要从1开始,不能输入0。
  7. Android 浮点型当小数点后为0时自动去掉
  8. android号码匹配位数修改
  9. Android 限制EditText输入小数点后面位数

随机推荐

  1. Android(安卓)启动画面跳转和去掉标题栏
  2. 转:Android 学习笔记2
  3. Android动态部署二:APK安装及AndroidManif
  4. Flutter入门到放弃:Could not find com.an
  5. android:configChanges中单独添加locale,
  6. [Android]Thread线程入门1
  7. android.uid.system
  8. Android实现EditText控件禁止输入内容的
  9. Android中通过来电转移实现“电话已关机
  10. android Animation 基础解答