【发布时间】:2017-02-25 18:19:40
【问题描述】:
在特定索引范围内使用 TextWatcher 时,我正在尝试使用带有 Spannable.EXCLUSIVE_INCLUSIVE 标志的 ForegroundColorSpan。
使用我设备的默认输入(三星键盘)没有任何问题,一切都按预期工作,但是当使用 Google 键盘作为输入时,情况就不同了。
从我的调试中,我发现即使您更改了一个字符,Google 键盘也会放置整个单词 - 我猜这是因为单词校正功能。结果,如果在单词中的某个点(甚至在末尾)应用了 Span,并且用户输入了更多文本,则 Span 消失了。 唯一的例外是跨度应用于单词中的最后一个字符,并且用户输入一个空格(“结束”单词)。
我发现的解决方法是简单地检查输入是否是一个完整的单词,并且无论何时 - 再次应用 Span。虽然这确实有效,但这不是一个很好的解决方案,因为我每次都需要在末尾设置插入符号,而且我必须在可以避免的情况下重新应用旋转(这就是我使用 Spannable.EXCLUSIVE_INCLUSIVE 标志的原因)。
附:我尝试了其他标志,例如 INCLUSIVE_INCLUSIVE 并且它有点工作 - 但是它也向后应用跨度,导致跨度应用于整个单词,而不是我指定的索引。
这个问题有更好的解决方案吗?
【问题讨论】:
标签: android input android-edittext keyboard textview