实现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限制输入小数点后两位/