Android限制EditText输入金额小于1E,并最多2位小
2018-03-01 本文已影响269人
蓝小默
- 首先在EditText布局中设置inputType:
android:inputType="number|numberDecimal"
- 给EditText设置Filter:
//设置最多提现金额不能超过1E,并设置小数点后最多只能有2位
mMoneyEdit.setFilters(new InputFilter[]{new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
String lastInputContent = dest.toString();
//如果包含.
if (lastInputContent.contains(".")) {
int index = lastInputContent.indexOf(".");
//如果光标在.的前面,那么判断.的位置是不是在8以后
if (dend < index) {
if (index >= 8) {
return "";
}
}
//如果光标在.后面大于3,说明小数位要超过2位了
if (dend - index >= 3) {
return "";
}
} else {
//如果输入的字符不是.并且字符串的长度大于8,说明输入的整数部分已经达到了千万
if (!source.toString().equals(".") && lastInputContent.length() >= 8) {
return "";
}
}
//如果字符串长度大于11直接返回了
if (lastInputContent.length() >= 11) {
return "";
}
return null;
}
}});