直接上代码
新建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位,小数点后两位
服装店经营模拟游戏 汉化版v0.1
服装店经营模拟游戏是一款玩法简单有趣的3D类型模拟经营游戏,
从细胞到奇点 最新版本v32.42
从细胞到奇点官方正版是一款科学放置游戏,在游戏中玩家需要点击
MY LITTLE PONY魔法公主 安卓版v10.0.0
MY LITTLE PONY魔法公主是一款卡通风格的模拟养成
星露谷物语sve 安卓版v1.5.6.52
星露谷物语sve手机版是游戏的超大拓展Mod内容,全称Sta
动物园大亨 手机版v2.0
动物园大亨是一款模拟动物园经营的休闲放置游戏,采用了卡通画风