HelloWorld开发者社区

www.helloworld.net - 开发者专属的技术社区

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  78 随笔 :: 0 文章 :: 13 评论 :: 50061 阅读

有时候,我们用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   HelloWorld开发者社区  阅读(864)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示