0

我正在查看拼写检查器框架,想知道是否可以使用它在我的应用程序中实现代码提示。我可以实现自定义“代码”字典吗?只是想知道这是否是在开始之前完成代码的一种可能方法。

4

1 回答 1

1

良好的代码完成(在我个人看来)是上下文相关的,并且应该只显示范围内且适用于代码中当前位置的内容的完成。例如,在 java 中,在方法之外显示方法名称完成并没有真正意义。对英语词典进行代码注释的简单拼写检查是有意义的,但对方法和变量名等则不然。

如果您想要一个功能齐全的代码编辑器,我认为您需要提供自己的编辑器(例如,不使用 TextView 本身)并自己完成,也许使用系统拼写检查器 API 来拼写检查代码注释。您可能想查看 TextView.java 和 Editor.java 的源代码,以了解如何在编辑器级别(可能与其他开源代码编辑器结合使用)实现您自己的代码编辑器和完成 UI。

如果您的需求相对简单,您可以通过将 SuggestionSpan 类型的跨度添加到 TextView 中的文本(这是拼写检查器所做的)以及您的完成信息来获得。

拼写框架基本上旨在根据字典检查一个或多个单词,而无需过多考虑上下文。(参见 SpellCheckerSession。你没有得到很多上下文。)

另一件事:在积极撰写文本(输入单词)时,补全通常由输入法处理,它(通常)在软输入区域的单词选择列表中显示补全。您可能不想要这些补全/建议,因为输入法只处理由 InputType 定义的编辑器类型的补全,如果您尝试将编辑器欺骗为纯文本,您可能会得到不太理想的结果。在您的情况下,您可能希望在编辑器中处理完成(有点像 TextView 在点击拼写错误的单词时处理建议的方式)并确保您的编辑器通过 TYPE_TEXT_FLAG_NO_SUGGESTIONS 禁用 IME 建议(这也会禁用拼写检查器)。如果你真的有野心,我想你也可以写一个输入法来配合你的编辑器。

于 2013-07-24T01:17:28.023 回答