use*_*966 3 double android android-edittext android-input-filter
我为EditText组件创建了一个InputFilter,它只允许一个范围内的双精度数(例如从1.5到5.5).一切正常,直到我删除小数点:
我键入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;
}
Run Code Online (Sandbox Code Playgroud)
我解决了我的问题.以下是其他人需要的解决方案:
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
if (source.equals("") && dest.toString().length() != 1) {
//backspace was clicked, do not accept that change,
//unless user is deleting the last char
CharSequence deletedCharacter = dest.subSequence(dstart, dend);
return deletedCharacter;
}
return "";
}
Run Code Online (Sandbox Code Playgroud)
}
| 归档时间: |
|
| 查看次数: |
1697 次 |
| 最近记录: |