У меня есть 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.