1

我有一个扩展 EditText 的自定义视图,该视图具有用于富文本编辑的 ToggleButtons。如果我允许自动完成,我想这样做,当前单词的指示器会触发我对样式跨度的检测。

例如,在大多数设备上,自动更正符合条件的单词是下划线。当您键入时,我有一个文本观察器,它跟踪应用于文本的当前样式,并在用户切换样式按钮时添加新的 spannables。这最终会检测到下划线并打开切换。

我可以编写代码来检查是否在我们找到跨度之前设置了下划线切换。(我实际上需要为我的所有样式执行此操作,因为某些设备使用背景颜色来指示当前的自动更正单词。)但我不确定我会使用什么来触发将切换回关闭。检查他们是否输入了空格?当您选择建议的单词时会发生什么?

有人做过吗?有没有办法询问跨度是否来自自动完成或任何其他通知以知道操作系统绘制了跨度?

4

1 回答 1

0

这是一个老问题,但刚才我有一个类似的问题,即在将跨度转换为 HTML 之前消除不需要的下划线。我在源代码中找到了答案TextView

有一种方法TextView#clearComposingText()可以在自动建议期间删除 IME 应用的所有样式,保留所有其他样式。您可能会在每次用户击键后调用它,这将删除下划线。

希望这可以帮助某人。

于 2015-11-05T22:40:44.783 回答