Я создал InputFilter для компонента EditText, который допускает только удвоения в пределах диапазона (например, от 1,5 до 5,5). Все работало нормально, пока я не удалил десятичную точку:Android: обратная связь на InputFilter
Я набрал 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;
}
Это будет работать, но я хотел бы сделать это автоматически. Я отправлю решение в ближайшее время. – user2287966