美文网首页
Android edittextt设置小数点前几位和后几位

Android edittextt设置小数点前几位和后几位

作者: 常朋_android | 来源:发表于2019-03-27 10:23 被阅读0次

    最近公司有个数入金额的问题 后台数据库说小数点不占长度,当时内心是懵逼的 还有这种情况 安卓小数点肯定占的 当时设置

    editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(2),new InputFilter() {
            @Override
            public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
                String lastInputContent = dest.toString();
                if (source.equals(".") && lastInputContent.length() == 0) {
                    return "0.";
                }
                if (source.equals("0") && lastInputContent.length() == 0) {
                    return "";
                }
                if (lastInputContent.contains(".")) {
                    int index = lastInputContent.indexOf(".");
                    if (dend - index >= 2 + 1) {
                        return "";
                    }
                } 
                return null;
            }
        }});
    

    导致小数点前只能输入一位或者小数点之后只能设置一位 这很尴尬呀 心里想着这怎么办 在网上搜查一番
    看到这位前辈的博客
    https://www.jianshu.com/p/dbcd5d4396fc
    相出来如下的判断 ,如有错误欢迎指正,此纪录只为学习 如有侵权请通知 立即删除

      public class DecimalBeforeAndRearInputFilter implements InputFilter {
        private static final int DEFAULT_MAX_INTEGER_LENGTH = 6;
        private static final int DEFAULT_DECIMAL_NUMBER = 2;
    
    /**
     * 保留小数点后多少位
     */
        private int mDecimalNumber = DEFAULT_DECIMAL_NUMBER;
    /**
     * 允许最大的整数多少位
     */
        private int mMaxIntegralLength = DEFAULT_MAX_INTEGER_LENGTH;
    
        public DecimalBeforeAndRearInputFilter(int mDecimalNumber, int mMaxIntegralLength) {
            this.mDecimalNumber = mDecimalNumber;
            this.mMaxIntegralLength = mMaxIntegralLength;
        }
    
        public DecimalBeforeAndRearInputFilter() {
    
        }
    
      @Override
        public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
            String lastInputContent = dest.toString();
            if (source.equals(".") && lastInputContent.length() == 0) {
                return "0.";
            }
            if (source.equals("0") && lastInputContent.length() == 0) {
                return "";
            }
            if (lastInputContent.contains(".")) {
                int index = lastInputContent.indexOf(".");
                if (dend - index >= mDecimalNumber + 1) {
                    return "";
                }
            } else if (!source.equals(".") && lastInputContent.length() > mMaxIntegralLength - 1) {
                return "";
            }
            return null;
        }
    }
    

    相关文章

      网友评论

          本文标题:Android edittextt设置小数点前几位和后几位

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