Метод setText () в EditText меняет положение курсора

Я написал библиотеку с настраиваемым представлением, которое было расширено из EditText.

Я хочу, чтобы при вызове пользователя setText () курсор оставался в той же позиции

Но по умолчанию EditText setText () перемещает курсор в начало

Метод setText () в EditText меняет положение курсора -> setText ("1111") -> Метод setText () в EditText меняет положение курсора

Как я могу это исправить? Могу ли я как-то переопределить метод setText (или другие методы, такие как takePointToView () и т. д.)

РЕДАКТИРОВАТЬ 1: Это не дубликат вопроса это

Потому что я хочу отвергать стандартное поведение курсора в Edittext.

И нет заставляет пользователя библиотеки вызывать append () или setSelection ()

Обновлено еще раз: Мое решение

@Override
public void setText(CharSequence text, BufferType type) {
    super.setText(text, type);
    if (getText() != null) {
        Selection.setSelection(getText(), getText().length());
    }
}

При звонке в setText() звоните и в editText.setSelection(editText.getText().length());.

Anshul Tyagi 23.10.2018 10:19

Как я уже сказал, это библиотека. Я не могу заставить пользователя каждый раз вызывать setSelection. Я хочу, чтобы это было поведение по умолчанию внутри моего настраиваемого Edittext для setText. Так что вопрос немного в другом

Stanislav Mukhametshin 23.10.2018 10:23

Вопрос немного другой, и его нельзя рассматривать как дублирующий.

Demigod 23.10.2018 10:45
0
3
303
1

Ответы 1

Вы должны установить текст в "", а затем добавить, чтобы переместить курсор.

  YourEditText.setText("");
  YourEditText.append("youText");

Это будет работать только в том случае, если вы всегда редактируете конец EditText, иначе редактирование текста в середине диапазона приведет к перемещению курсора до конца для каждой записи.

robotsquidward 11.03.2021 15:57

Другие вопросы по теме