Я использую поле EditText, в котором пользователь может указать сумму денег.
Я установил для inputType значение numberDecimal, которое отлично работает, за исключением того, что это позволяет вводить числа, например 123.122, что не идеально. за деньги.
Я написал некоторый пользовательский метод InputFilter, и он работает следующим образом. Пользователь может использовать 5 элементов до точки и после точки два, но не работает правильно. Мои цели:
1) использоватьдолжен вводить максимум 9999,99
2) Если пользователь, начинающийся с 0, а второй элемент также равен 0, он должен заменить на. (например, 0,0), а после двух элементов после точки (например, 0,01) вот мой код
public class DecimalDigitsInputFilter implements InputFilter {
Pattern mPattern;
public DecimalDigitsInputFilter(int digitsBeforeZero,int digitsAfterZero) {
mPattern=Pattern.compile("[0-9]*" + (digitsBeforeZero-1) + "}+((\\.[0-9]*" + (digitsAfterZero-1) + "})?)||(\\.)?");
}
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
Matcher matcher=mPattern.matcher(dest);
if(!matcher.matches())
return "";
return null;
}
}
Я называю этот метод следующим образом
amountValue.setFilters(new InputFilter[] {new DecimalDigitsInputFilter(5,2)});
Как я могу переписать свой код для решения моих проблем? спасибо