Android(安卓)Edittext输入限制一位小数2位小数(n位)小数简单通用实现
16lz
2021-01-24
最近一个需求最大金额输入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设置只能输入数字和小数点
- maxEms和maxLength的区别以及maxEms不起作用的问题
- 断点下载
- Android金额输入框只允许输入小数点后两位
- android多线程断点下载——网络编
- android长度单位
- android EditText限制输入长度
- Android(安卓)EditText限制输入两位小数
- Android(安卓)金钱计算BigDecimal 的使用