Я пытаюсь применить ForegroundColorSpan с флажком Spannable.EXCLUSIVE_INCLUSIVE при использовании TextWatcher в определенном диапазоне индексов.Потеря пробелов в EditText с помощью Google Keyboard в качестве входных данных
С помощью ввода-вывода моего устройства (клавиатура Samsung) проблем нет, и все работает так, как ожидалось, однако при использовании Google Keyboard в качестве входных данных это другая история.
От моей отладки я обнаружил, что Google Keyboard помещает целые слова, даже если вы меняете один символ - я думаю, это из-за функции коррекции слова. В результате, если Span был применен в какой-то момент слова (даже в конце), и пользователь вводит больше текста, диапазон исчезает. Единственное исключение - это когда диапазон применяется к последнему символу слова, а пользователь вводит пробел («заканчивает» слово).
Обходной путь, который я нашел, - это просто проверить, является ли вход целым словом, и всякий раз, когда он есть - снова примените Span. Хотя это действительно работает, это не очень хорошее решение, так как мне нужно каждый раз настраивать каретку, и тот факт, что мне нужно повторно наложить спин, когда этого можно избежать (поэтому я использую флаг Spannable.EXCLUSIVE_INCLUSIVE).
P.S. Я пробовал другие флаги, такие как INCLUSIVE_INCLUSIVE, и он сортируется, но он применяет пролет назад как-хорошо, в результате чего Span применяется ко всему слову, а не к индексу, который я указал.
Есть ли лучшее решение этой проблемы?