【问题标题】:How do I determine if highlight/underline in EditText is from autocomplete如何确定 EditText 中的突出显示/下划线是否来自自动完成
【发布时间】:2012-11-15 09:35:53
【问题描述】:

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

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

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

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

【问题讨论】:

  • 如果您自己生成所有样式跨度(自动完成样式除外),那么为什么不向它们添加诸如标志/id 之类的东西呢?仅对于包含此类标志/ID 的跨度,您才可以切换相关的ToggleButton(s)。没有它的跨度是系统生成的,因此应该被忽略。我可能会为所有跨度创建简单的子类来实现这一点,或者某种代理/包装器。
  • 不幸的是,我没有自己生成它们。
  • 您能否详细说明跨度是如何生成的?我很想知道它们来自哪里。

标签: android autocomplete android-edittext


【解决方案1】:

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

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

希望这对某人有所帮助。

【讨论】:

    猜你喜欢
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多