Как отключить поведение 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, сломать любую клавиатуру с включенным автозаменой или любую клавиатуру, которая использует текст завершения.
Другими словами - не делайте этого, это будет гораздо больше проблем, чем стоит, и сломается для большинства пользователей.