Я использую интерфейс android.text.TextWatcherдля прослушивания изменений в EditText в одном из моих приложений. Я отслеживаю изменения, чтобы разрешить параметры отмены, используя функции beforeTextChanged() и onTextChanged().
Обычно изменения происходят по одному символу за раз, например, если пользователь вводит «привет», я получу следующие значения для начала, после и значения счетчика метода beforeTextChanged():
start = 0; count = 0; after = 1; // typed 'h'
start = 1; count = 0; after = 1; // typed 'e'
start = 2; count = 0; after = 1; // typed 'l'
start = 3; count = 0; after = 1; // typed 'l'
start = 4; count = 0; after = 1; // typed 'o'
Теперь, на ICS/Samsung Galaxy Nexus с активными предложениями по правописанию, когда я набираю тот же текст, слово подчеркивается в EditText до тех пор, пока я не вставлю пробел, и я получу следующие результаты:
start = 0; count = 0; after = 1; // typed 'h'
start = 0; count = 1; after = 2; // typed 'e'
start = 0; count = 2; after = 3; // typed 'l'
start = 0; count = 3; after = 4; // typed 'l'
start = 0; count = 4; after = 5; // typed 'o'
Согласно документации, последнее поведение рассматривается как «пользователь набрал слово из 1 буквы, затем стер его и набрал слово из 2 букв, затем стер его и набрал слово из 3 букв и так далее…». И когда я выполняю отмену в EditText, я получаю «привет», «», «ад», «», «ад», «», «он», «», «ч», где я хочу только " Привет", "".
Есть ли способ предотвратить орфографические предложения, чтобы дать эти значения. ИМХО, это нарушение контракта, данного в документации метода.
Если нет, есть ли способ предотвратить предложение в моем тексте редактирования?