实现EditText只能输入小数点后两位的控制,主要是给EditText添加输入监听事件
1、设置EditText
EditText设置输入类型为浮点型
1
| android:inputType="numberDecimal"
|
设置监听
1
| mEditText.addTextChangedListener(new MyTextWatcher());
|
2、监听器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| class MyTextWatcher implements TextWatcher{ @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if (s.toString().contains(".")) { if (s.length() - 1 - s.toString().indexOf(".") > 2) { s = s.toString().subSequence(0, s.toString().indexOf(".") + 3); mEditText.setText(s); mEditText.setSelection(s.length()); } } if (s.toString().trim().substring(0).equals(".")) { s = "0" + s; mEditText.setText(s); mEditText.setSelection(2); } if (s.toString().startsWith("0") && s.toString().trim().length() > 1) { if (!s.toString().substring(1, 2).equals(".")) { mEditText.setText(s.subSequence(0, 1)); mEditText.setSelection(1); return; } } } @Override public void afterTextChanged(Editable s) { } }
|
当前已经实现了小数点后两位的控制了
3、拓展
实现当我们没有输入小数点,格式化数据为#.00的格式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| public static boolean isFolat(String value) { boolean bCheckResult = true; try { Float dCheckValue = Float.parseFloat(value); if (dCheckValue instanceof Float == false) { bCheckResult = false; } } catch (NumberFormatException e) { bCheckResult = false; } return bCheckResult; } * 格式化字符串 */ public static String formatFloat(String str) { if (isFolat(str)) { DecimalFormat format = new DecimalFormat("#0.00"); return format.format(Double.parseDouble(str)); } else { return str; } }
|
本文地址:
http://itdais.com/2016/07/28/EditText限制输入小数点后两位/