Android Edittext输入限制一位小数2位小数(n位)小数简单通用实现

最近一个需求最大金额输入999999.99,在网上看了一下都写的比较繁琐,不是很易懂

首先限制输入类型在xml里面配置

android:inputType="numberDecimal"
再限制长度算上小数点一共9位
android:maxLength="9"
重点来了怎么限制2位小数
直接上代码
private String discountStr;

private TextWatcher discountWatch = new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        discountStr = s.toString();
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        String trim = s.toString().trim();
        if (!TextUtils.isEmpty(trim)) {
            Double currentInput = 0.0;
            if (trim.contains(".")) {
                String[] split = trim.split("\\.");
                if (split.length > 1) {
                    String s1 = split[1];
                    if (!TextUtils.isEmpty(s1)) {
                        if (s1.length() == 2) {
                            etDiscount.setText(discountStr);
                            try {
                                String trim1 = etDiscount.getText().toString().trim();
                                etDiscount.setSelection(trim1.length());
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                            return;
                        }
                    }
                }
            }
           

        } 

    }

    @Override
    public void afterTextChanged(Editable s) {

    }
};
原理很简单,在beforeTextChanged里面把上一次输入的值用discountStr存起来
,在onTextChanged里面判断是否包含小数点,如果包含小数点则对其进行切割,如
果切割的第二位长度大于2(N)则让它再次赋值为discountStr。,需要注意的是分割
小数点要用到转义符。






 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值