Подтвердить что ты не робот

Как использовать событие EditText onTextChanged, когда я нажимаю номер?

У меня есть EditText с "text = 0.00". Когда я нажимаю номер 3, он должен быть как 0.03 а во второй раз, когда я нажимаю номер 5, текст должен быть 0.35. И 35.0, 35.09 как это. Первоначально EditText имеет значение 0.00.

Все это делается с помощью одного и того же EditText.

Как мне это достичь? Я попытался использовать addTextChangedListener() с TextWatcher().

4b9b3361

Ответ 1

Вы выбрали правильный подход. Вы должны расширить класс с помощью TextWatcher и переопределить afterTextChanged(), beforeTextChanged(), onTextChanged().

Вы должны написать нужную логику в методе afterTextChanged() для достижения требуемой вами функциональности.

Ответ 2

Вы также можете попробовать следующее:

EditText searchTo = (EditText)findViewById(R.id.medittext);
searchTo.addTextChangedListener(new TextWatcher() {
    @Override
    public void afterTextChanged(Editable s) {
        // TODO Auto-generated method stub
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        // TODO Auto-generated method stub
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        doSomething();
    } 
});

Ответ 3

Здесь я написал нечто похожее на то, что вам нужно:

    inputBoxNumberEt.setText(".     ");
    inputBoxNumberEt.setSelection(inputBoxNumberEt.getText().length());
    inputBoxNumberEt.addTextChangedListener(new TextWatcher() {

        boolean ignoreChange = false;

        @Override
        public void afterTextChanged(Editable s) {
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start,
                                      int count, int after) {
        }

        @Override
        public void onTextChanged(CharSequence s, int start,
                                  int before, int count) {
            if (!ignoreChange) {
                String string = s.toString();
                string = string.replace(".", "");
                string = string.replace(" ", "");
                if (string.length() == 0)
                    string = ".     ";
                else if (string.length() == 1)
                    string = ".  " + string;
                else if (string.length() == 2)
                    string = "." + string;
                else if (string.length() > 2)
                    string = string.substring(0, string.length() - 2) + "." + string.substring(string.length() - 2, string.length());
                ignoreChange = true;
                inputBoxNumberEt.setText(string);
                inputBoxNumberEt.setSelection(inputBoxNumberEt.getText().length());
                ignoreChange = false;
            }
        }
    });