在特定索引范围内使用TextWatcher时,我正在尝试使用Spannable.EXCLUSIVE_INCLUSIVE标志应用ForegroundColorSpan。
使用我的设备的默认输入(三星键盘)没有任何问题,一切都按预期工作,但是当使用谷歌键盘作为输入,这是一个不同的故事。
从我的调试中我发现,即使你改变一个角色,谷歌键盘也会放置整个单词 - 我猜这是因为单词校正功能。因此,如果跨度应用于单词中的某个点(即使在结尾处),并且用户输入更多文本,则跨度消失。 唯一的例外是当跨度应用于单词中的最后一个字符时,用户输入一个空格(“结束”单词)。
我找到的解决方法是简单地检查输入是否是一个完整的单词,并且只要它是 - 再次应用Span。虽然这确实有效,但它不是一个非常好的解决方案,因为我需要每次都设置插入符号,并且当必须避免时我必须重新应用旋转(这就是我使用Spannable.EXCLUSIVE_INCLUSIVE标志的原因) )。
P.S。我尝试了其他标志,例如INCLUSIVE_INCLUSIVE,它有效 - 但是它也会向后应用跨度,导致跨度应用于整个单词,而不是我指定的索引。
这个问题有更好的解决方案吗?
答案 0 :(得分:1)
好的,所以我找到了一个不同的解决方案 - 关闭键盘的输入建议。这样做可以防止输入成为整个单词,而不是每次只输入一个字符。
为此,我必须在EditText的inputType属性中添加textNoSuggestions标志。
android:inputType="textNoSuggestions|<other_flags>"
我在此处找到了有关此inputType的更多信息:Turn off autosuggest for EditText?