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。,需要注意的是分割
小数点要用到转义符。






 
  

你可能感兴趣的:(Android Edittext输入限制一位小数2位小数(n位)小数简单通用实现)