Android EditText实现小数点后几位的终级方案

本文介绍了一种在Android中使用EditText控制输入小数点后位数的方法,通过自定义PointLengthFilter过滤器,可以轻松地限制用户输入的小数精度,适用于各种需要精确数值输入的应用场景。

有时候,我们用EditText的时候,会要求输入小数点后几位,遇到过几次这样的需求,这次把它给记下来,方便以后使用

/**
 * 小数位数
 */
public class PointLengthFilter implements InputFilter{
    public PointLengthFilter(int pointLength){
        mPointLength = pointLength;
    }

    public void setPointLength(int pointLength){
        mPointLength = pointLength;
    }


    /** 输入框小数的位数  默认保留3位小数*/
    private int mPointLength = 3;

    public CharSequence filter(CharSequence source, int start, int end,
                               Spanned dest, int dstart, int dend) {
        // 删除等特殊字符,直接返回
        if ("".equals(source.toString())) {
            return null;
        }

        String dValue = dest.toString();
        if(TextUtils.isEmpty(dValue)){
            return source;
        }


        String[] splitArray = dValue.split("\\.");
        if(splitArray != null && splitArray.length > 1){
            int cursorIndex = dValue.indexOf(".");

            if(dend > cursorIndex){
                String dotValue = splitArray[1];
                int diff = dotValue.length() + 1 - mPointLength;
                if(diff > 0){
                    return "";
                }
            }
        }

        return source;
    }
}
posted on 2018-11-14 20:21  九路313 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/start1225/p/9960148.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值