Как я могу ограничить ввод поля EditText двумя символами после запятой? - PullRequest
2 голосов
/ 22 января 2011

Я работаю над приложением для Android с окном EditText. В этом поле я хочу, чтобы пользователь ввел валюту.

Я уже ограничил клавиатуру цифрами и десятичными числами, используя удобный android: inputType = "numberDecimal" , но я бы хотел, чтобы пользователь не мог вводить более двух цифр после десятичного знака (чтобы контент сохранялся как валюта, а также только потому, что я думаю, что важно, чтобы пользователь четко понимал, что он вводит).

Однако у меня нет большого опыта программирования, и я не знаю, с чего начать (валидация - довольно большая тема, ха-ха). Немного гуглил, и звучит так, как будто я должен сделать свое собственное расширение класса InputFilter, но я не уверен, как это сделать или есть ли лучший способ. Так что любой совет действительно будет оценен!

Ответы [ 3 ]

2 голосов
/ 22 января 2011
0 голосов
/ 25 января 2015

Попробуйте это

editText.setFilters(new InputFilter[] {new DecimalDigitsInputFilter(2)});

DecimalDigitsInputFilter

public class DecimalDigitsInputFilter implements InputFilter {
    Pattern mPattern;
    public DecimalDigitsInputFilter(int digitsAfterZero) {
        mPattern=Pattern.compile("[0-9]+((\\.[0-9]{0," + (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;
    }
}
0 голосов
/ 25 января 2015

Чтобы пользователь не мог вводить более двух цифр после десятичной точки, просто используйте следующий код:

myEditText1 = (EditText) findViewById(R.id.editText1);  
myEditText1.setInputType(3);

Число «3» помогает.Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...