直接上代码
新建DecimalInputTextWatcher类继承TextWatcher (代码可直接复制使用)
import android.text.Editable; import android.text.InputFilter; import android.text.TextWatcher; import android.widget.EditText; /** * EditText 限制输入整数和小数 的位数 * 默认 整数位无限制,小数位 最多2位 */ public class DecimalInputTextWatcher implements TextWatcher { private static final int DEFAULT_DECIMAL_DIGITS = 2;//默认 小数的位数 2 位 private EditText editText; private int decimalDigits;// 小数的位数 private int integerDigits;// 整数的位数 public DecimalInputTextWatcher(EditText editText) { this.editText = editText; this.decimalDigits = DEFAULT_DECIMAL_DIGITS; } public DecimalInputTextWatcher(EditText editText, int decimalDigits) { this.editText = editText; if (decimalDigits <= 0) throw new RuntimeException("decimalDigits must > 0"); this.decimalDigits = decimalDigits; } public DecimalInputTextWatcher(EditText editText, int integerDigits, int decimalDigits) { this.editText = editText; if (integerDigits <= 0) throw new RuntimeException("integerDigits must > 0"); if (decimalDigits <= 0) throw new RuntimeException("decimalDigits must > 0"); this.decimalDigits = decimalDigits; this.integerDigits = integerDigits; } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable editable) { String s = editable.toString(); editText.removeTextChangedListener(this); if (s.contains(".")) { if (integerDigits > 0) { editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(integerDigits + decimalDigits + 1)}); } if (s.length() - 1 - s.indexOf(".") > decimalDigits) { s = s.substring(0, s.indexOf(".") + decimalDigits + 1); editable.replace(0, editable.length(), s.trim());//不输入超出位数的数字 } } else { if (integerDigits > 0) { editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(integerDigits + 1)}); if (s.length() > integerDigits) { s = s.substring(0, integerDigits); editable.replace(0, editable.length(), s.trim()); } } } if (s.trim().equals(".")) {//小数点开头,小数点前补0 s = "0" + s; editable.replace(0, editable.length(), s.trim()); } if (s.startsWith("0") && s.trim().length() > 1) {//多个0开头,只输入一个0 if (!s.substring(1, 2).equals(".")) { editable.replace(0, editable.length(), "0"); } } editText.addTextChangedListener(this); } }
使用
editText.addTextChangedListener(new DecimalInputTextWatcher(weight, 3, 5)); //限制输入位数:整数3位,小数点后两位
茶杯头甜蜜终章dlc 官方手机版v1.0.0.3
下载火柴人传说暗影格斗内置菜单 最新版v3.0.1
下载荒野乱斗测试服 安卓版v61.10.3
下载荒野乱斗彩虹服 安卓版v61.10.3
下载寒霜启示录 安卓版v1.25.10
寒霜启示录是一款生存模拟游戏,不少玩家可能对于末日都有着自己
末日城堡免广告版 安卓最新版v0.7.1
末日城堡免广告版是一款非常好玩的模拟经营类游戏,内部可以不看
甜蜜人生模拟器 最新版v1.4.5
甜蜜人生模拟器是一款非常好玩的模拟恋爱手游,玩家在这里能够对
武器锻造师内置功能菜单 v10.4
武器锻造师内置菜单版是游戏的破解版本,在该版本中为玩家提供了
开放空间overfield 安卓版v1.0.5
开放空间Overfield是一款箱庭养成经营手游,让你在广阔