我为EditText组件创建了一个InputFilter,它只允许在一定范围内输入double类型的数字(例如从1.5到5.5)。一切都很顺利,直到我删除了小数点:
我输入了1.68,然后删除了小数点。文本框中的值变成了168,显然超出了范围。
以下是我的过滤器的简化版本:
我输入了1.68,然后删除了小数点。文本框中的值变成了168,显然超出了范围。
以下是我的过滤器的简化版本:
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
if (isValid(dest.toString() + source.toString())) {
//input is valid
return null;
}else{
//The input is not valid
return "";
}
}
private boolean isValid(String input) {
Double inputValue = Double.parseDouble(input);
boolean isMinValid = (1.5 <= inputValue);
boolean isMaxValid = (5.5 >= inputValue);
return isMinValid && isMaxValid;
}