EditText输入时的数字过滤器 保留小数位和最大输入位

  • 在app开发过程中 很多都会用到用户输入 涉及到用户输入 就会用到EditText组件
  • 在用到数字输入时,很多都是要求位数限制和小数位限制的
  • 为了方便以后开发用到 这里我封装了一个工具类 供参考
public class DecimalDigitsInputFilter implements InputFilter {

    Pattern mPattern;

    public DecimalDigitsInputFilter(int digitsBeforeZero, int digitsAfterZero) {
        mPattern = Pattern.compile("[0-9]{0," + (digitsBeforeZero - 1) + "}+((\\.[0-9]{0," + (digitsAfterZero - 1) + "})?)||(\\.)?");
    }

    @Override
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
        Matcher matcher = mPattern.matcher(dest);
        if (!matcher.matches())
            return "";
        return null;
    }

}

使用说明:

//初始化组件
@BindView(R.id.et_input_PayAmount)
EditText mEtInputPay;
//在init()方法中设置
private void init() {
    //这里是判断用户是否登录
    user = UserUtils.getUserInfo();
         //如果已登录执行
         if (user != null) {
            payAmountTv.setText(String.format(Locale.CHINA, "%.2f", user.getBalance()));
            commissionPayTv.setText(String.format(Locale.CHINA, "%.2f", user.getCanWithdraw()));
        }
        //这里我用到的是 最大输入9位 小数限制2位
        mEtInputPay.setFilters(new InputFilter[]{new DecimalDigitsInputFilter(9,2)});
    }    

猜你喜欢

转载自blog.csdn.net/life_s/article/details/80479910