EditText设置只能输入整数金额
2017-10-18 12:02
211 查看
1.设置类型为数字
2.输入内容过滤
3.过滤的条件:
输入的只能是整数,最大值为200
<EditText android:id="@+id/input_edit" android:layout_width="36dp" android:layout_height="wrap_content" android:background="@null" android:focusable="true" android:gravity="center" android:hint="0" android:numeric="integer" android:singleLine="true" />
2.输入内容过滤
EditText input_edit= (EditText) findViewById(R.id.input_edit); InputFilter[] filters = {new CashierInputFilter()}; input_edit.setFilters(filters);
3.过滤的条件:
输入的只能是整数,最大值为200
public class CashierInputFilter implements InputFilter { Pattern mPattern; //输入的最大金额 private static final int MAX_VALUE = 200; //小数点后的位数 private static final int POINTER_LENGTH = 0; private static final String POINTER = "."; private static final String ZERO = "0"; public CashierInputFilter() { mPattern = Pattern.compile("([0-9]|\\.)*"); } /** * @param source 新输入的字符串 * @param start 新输入的字符串起始下标,一般为0 * @param end 新输入的字符串终点下标,一般为source长度-1 * @param dest 输入之前文本框内容 * @param dstart 原内容起始坐标,一般为0 * @param dend 原内容终点坐标,一般为dest长度-1 * @return 输入内容 */ @Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { String sourceText = source.toString(); String destText = dest.toString(); //验证删除等按键 if (TextUtils.isEmpty(sourceText)) { return ""; } Matcher matcher = mPattern.matcher(source); //已经输入小数点的情况下,只能输入数字 if (destText.contains(POINTER)) { if (!matcher.matches()) { return ""; } else { if (POINTER.equals(source)) { //只能输入一个小数点 return ""; } } //验证小数点精度,保证小数点后只能输入2位 int index = destText.indexOf(POINTER); int length = dend - index; if (length > POINTER_LENGTH) { return dest.subSequence(dstart, dend); } } else { //没有输入小数点的情况下,只能输入小数点和数字,但首位不能输入小数点和0 if (!matcher.matches()) { return ""; } else { if ((POINTER.equals(source)) && TextUtils.isEmpty(destText)) { return ""; } //如果首位为“0”,则只能再输“.” if (ZERO.equals(destText)) { if (!POINTER.equals(sourceText)) { return ""; } } } } //验证输入金额的大小 double sumText = Double.parseDouble(destText + sourceText); if (sumText > MAX_VALUE) { ToastUtil.toast("最多200个"); return dest.subSequence(dstart, dend); } return dest.subSequence(dstart, dend) + sourceText; } }
相关文章推荐
- C# DEV TextEdit 设置文本框只能输入数字(整数)
- android EditText设置只能输入金额
- Android edittext设置只能输入整数
- EditText限制只能输入整数
- android的edittext设置输入限制,只能输入数字
- EditText输入长度动态控制,最大长度为16位,小数点后面最大为2位,输入整数只能为13位
- Android设置EditText只能输入字母和数字
- 设置EditText只能输入字母,数字和英文字符
- android 设置EditText只能输入大写字母,Fragment的软键盘输入模式
- 新手学习:设置EditText只能输入数字
- 设置EditText输入金额
- 设置EditText只能输入字母和数字
- EditText设置输入的类型,比如说限制只能输入字母和数字
- Android EditText设置只能输入数字和小数点
- 限制EditText只能输入整数
- 设置EditText只能输入数字和字母
- 限制EditText只能输入整数
- Android EditText设置只能输入数字和小数点
- android 设置EditText只能输入数字
- [Android] EditText设置只能输入2位小数的探讨