Как отключить поведение backspace в EditText Android?

Например, у меня есть следующая строка в EditText:

Lorem I psum Dolor Sit Amet, Aceistectier Adipiscing Elit, Sed Diam Nonummy Nibh Euismod Tincidunt Ут Лареет Долоре Магна Аликвам Эрат Волутпат

Обычное поведение - когда пользователь долго нажимает кнопку возврата на виртуальной клавиатуре, система удаляет каждое слово напрямую, например:

Lorem I psum Dolor Sit Amet, Aceistectier Adipiscing Elit, Sed Diam Nonummy Nibh Euismod Tincidunt Ут Лареет Долоре Магна Аликвам Эрат Волутпат

становится

Lorem I psum Dolor Sit Amet, Aceistectier Adipiscing Elit, Sed Diam Nonummy Nibh Euismod Tincidunt ут Лаореет Долоре Магна Аликвам Эрат

Могу ли я предотвратить такое поведение в моем приложении?

Я пытался наблюдать onKeyDown, onKeyUp, onKeyLongPress а также onTextChanged, afterTextChanged, beforeTextChanged, но не находит то, что я могу использовать, чтобы предотвратить такое поведение.

1 ответ

Решение

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

Переопределение onKeyXXX не будет работать, поскольку они предназначены для физических кнопок и не будут генерироваться экранными клавиатурами.

Если вам нужно переопределить это, вам нужно будет реализовать TextWatcher и отредактировать последовательность s в afterTextChanged. Вам нужно будет искать случаи, когда новый текст меньше старого текста более чем на 1 символ, и если это так, замените текст старым текстом минус 1 символ. Обратите внимание, что это может, в зависимости от того, как клавиатура и события последовательности Android, сломать любую клавиатуру с включенным автозаменой или любую клавиатуру, которая использует текст завершения.

Другими словами - не делайте этого, это будет гораздо больше проблем, чем стоит, и сломается для большинства пользователей.

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