最近一个需求最大金额输入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。,需要注意的是分割小数点要用到转义符。