Задать вопрос
@lacredin
Программист

Как работать с автозаменой android в EditText?

Здравствуйте.
Столкнулся с проблемой того, что при работе автозамены вводимого текста, при нажатии переноса строки или пробела(в общем когда функция автозамены выполняет автозамену) в функцию afterTextChanged(функция интерфейса TextWatcher) передаётся старая строка, без новых символов пробела или переноса строки.
Экранную клавиатуру использую стандартную андройдовскую.

Подскажите как работать с автозаменой?
  • Вопрос задан
  • 541 просмотр
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@lacredin Автор вопроса
Программист
Автозамена работает по принципу:
Сначала, заменить слово, которое редактируется(даже если замена происходит на тоже самое слово)
Затем добавить символ конца слова(пробел, абзац и т.п.)
Зачем так сделано не знаю.
В соответствии с этим принципом в afterTextChanged сначала попадает строка с заменённым словом и сразу же за ней строка с новым символом(afterTextChanged вызывается дважды).

И здесь есть одна тонкость. Если во время первого вызова afterTextChanged изменить содержимое editText (касается большинства наследников TextView), то второго вызова с добавлением символа конца слова не произойдёт.
А поскольку нельзя напрямую перехватывать символы от виртуальной клавиатуры(разве что подключаться к ней, но возможно ли это и как это делается я не знаю.), то узнать происходит ли обычная замена или замена в следствии конца слова не представляется возможным(во всяком случае я не нашёл способа, это не значит, что его нет).
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Brief Москва
от 150 000 до 210 000 ₽
СМК-РК Москва
от 200 000 до 250 000 ₽
Crystal Service Integration Санкт-Петербург
от 200 000 ₽