Положение курсора EditText при нажатии на клавишу возврата / удаления, когда присутствует TextWatcher - PullRequest
0 голосов
/ 30 августа 2018

У меня есть EditText, который имеет пользовательский TextWatcher. Когда пользователь перемещает позицию курсора вручную и удаляет какой-либо символ, он всегда переходит в конечную позицию. Как сохранить ту же позицию курсора, когда он нажимает клавишу Delete / Backspace?

  private class CTextWatcher implements TextWatcher {
    private final EditText editText;


    CTextWatcher(EditText editText, String prefix) {
        this.editText = editText;
        this.prefix = prefix;
    }

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

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        // do nothing
    }

    @Override
    public void afterTextChanged(Editable editable) {

         editText.removeTextChangedListener(this); // Remove listener
        editText.setText(formattedString);
          editText.setSelection(editText.getText().length());
        editText.addTextChangedListener(this); // Add back the listener
    }

Например, у меня есть text = 1234, и пользователь перемещает курсор до 3 и нажимает назад, чтобы получить txt=134, тогда курсор должен оставаться на 2 позиции с текущим кодом, который он всегда идет до конца. то есть после 4.

1 Ответ

0 голосов
/ 30 августа 2018

Удалить строку ниже:

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