失去EditText的跨度与谷歌键盘作为输入



我试图应用ForegroundColorSpan与Spannable。在特定索引范围内使用TextWatcher时的EXCLUSIVE_INCLUSIVE标志。

我的设备的默认输入(三星键盘)没有问题,一切工作如预期,但当使用谷歌键盘作为输入,这是一个不同的故事。

从我的调试中我发现,即使你改变一个字符,Google键盘也会显示整个单词——我猜这是因为单词校正功能。因此,如果在单词的某个点(甚至在末尾)应用了Span,并且用户输入了更多文本,那么Span就会消失。唯一的例外是当span应用于单词的最后一个字符,并且用户输入一个空格("结束"单词)时。

我发现的解决方法是简单地检查输入是否是一个完整的单词,每当它是-再次应用Span。虽然这确实有效,但这不是一个很好的解决方案,因为我需要在每次结束时设置插入符号,而且我必须在可以避免的情况下重新应用自旋(这就是为什么我使用Spannable)。EXCLUSIVE_INCLUSIVE国旗)。

注:我尝试了其他标志,如inclve_inclusive,它也可以工作-但是它也向后应用span,导致span应用到整个单词,而不是我指定的索引。

这个问题有更好的解决方案吗?

好的,所以我找到了一个不同的解决方案-关闭键盘的输入建议。这样做可以防止每次输入都是整个单词,而不是单个字符。

要做到这一点,我必须添加textNoSuggestions标志到EditText的inputType属性。

android:inputType="textNoSuggestions|<other_flags>"

我在这里找到了更多关于这个inputType的信息:关闭EditText的自动建议?

最新更新