android 使用InputFilter 对金额和长度进行限制
16lz
2021-01-23
public class MaxTextLengthFilter implements InputFilter { private int mMaxLength; private boolean isNum; private String note; private String message = null; /** * * @param max 支持的最大长度 * @param isNum 是不是数字 * @param note 超过后的提示 */ public MaxTextLengthFilter(int max, boolean isNum, String note) { mMaxLength = max; this.isNum = isNum; this.note = note; } public MaxTextLengthFilter setMessage(String message) { this.message = message; return this; } public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { int keep = mMaxLength - (dest.length() - (dend - dstart)); if (keep < (end - start)) { if (TextUtils.isEmpty(message)) ToastUtils.showShortToast(String.format("%s最多%s位", note, mMaxLength)); else { ToastUtils.showShortToast(message); } } if (keep <= 0) { return ""; } else if (keep >= end - start) { if (isNum) { int posDot = dest.toString().indexOf("."); if (start < end && posDot > 0 && (dest.length() - posDot) > 2) {//小数点后要保留两位小数 ToastUtils.showShortToast("小数点后只能输两位"); return ""; } if (start < end && posDot > 1 && dest.toString().equals("0.") && source.equals("0")) {//确保不会出现不是小数的第一位为0 ToastUtils.showShortToast("请输入正确格式的金额"); return ""; } else if (start < end && posDot < 0 && dest.toString().equals("0") && !source.equals(".")) { ToastUtils.showShortToast("请输入正确格式的金额"); return ""; } } else return null; } else return source.subSequence(start, start + keep); return null; }}
更多相关文章
- android EditText输入金额,限制位数和显示小数点后几位
- android 金额输入限制,EditText保留两位小数
- Android 限制edittext 整数和小数位数 过滤器
- Android 保留两位小数点的4种方法
- DecimalFormat 实现保留小数点位数及四舍五入
- Android Edittext设置负数以及小数
- Android 浮点型当小数点后为0时自动去掉
- Android 限制EditText输入小数点后面位数
- android edittext 限制输入框小数位数