如何在Android键盘中包含建议

我正在使用Android SoftKeyboard。 我已经为键盘创建了布局,但是如果我们在EditText中键入一些单词,我不知道如何包含建议。
例如,如果我写“Kn”,则“建议”中会显示“已知”和“已知”。
所以我的问题是 –
1)如何在Android软键盘中包含建议?
2)有没有办法包括我们自己的建议清单?
Thanx提前很多。
我已经检查了这个 ,但是没能find任何正确的答案。 任何帮助,将不胜感激。

编辑
我想直接在键盘上方添加建议,如下图所示。

键盘的建议

您可以使用静态方法UserDictionary.Words.addWord(....) : Link

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { // On JellyBean & above, you can provide a shortcut and an explicit Locale UserDictionary.Words.addWord(this, "MadeUpWord", 10, "Mad", Locale.getDefault()); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) { UserDictionary.Words.addWord(this, "MadeUpWord", 10, UserDictionary.Words.LOCALE_TYPE_CURRENT); } 

您需要将此权限添加到清单中:

  

添加的单词将出现在Settings > Language & input > Personal dictionary

如果您正在实现自己的软键盘,我建议您完成创建输入法 。 建议通常显示在Candidates View 。 默认情况下, InputMethodService#onCreateCandidatesView()返回null。 您应该覆盖此方法以返回建议栏的实现。

这是一个实现Candidates视图的示例项目: SoftKeyboard 。

更多信息

单词和短语建议进入候选人视图。 有关如何创建和填充它的信息在上面提到的示例项目中。

据我所知,选择建议的单词/短语是开发人员的责任。 Android不会为您提供这些。 您可能需要一组词典 – 您计划支持的每种语言/区域设置一个词典。 您可能还希望维护用户指定单词的字典。

Android的默认键盘使用这些: 链接

如果您下载其中一个,请将其解压缩并使用文本编辑器打开:

 dictionary=main:en,locale=en,description=English,date=1402373178,version=47 word=the,f=222,flags=,originalFreq=222 word=to,f=215,flags=,originalFreq=208 word=of,f=214,flags=,originalFreq=214 word=and,f=212,flags=,originalFreq=212 word=in,f=210,flags=,originalFreq=210 .... 165,635 more lines 

显而易见,频率在确定单词作为建议的适合性方面起着关键作用。 当用户键入ta时,您可能不想建议tachometer 。 你可能想建议take频率帮助你。

自动改正:

 word=id,f=99,flags=,originalFreq=99 shortcut=I'd,f=whitelist 

标志表明适当性:

 word=goddamn,f=0,flags=offensive,originalFreq=62 

即使您决定使用这些词典,解析它们并获得有意义的建议的代码也必须来自您。

关于predictive text inputspelling correction两篇文章(均由Peter Kankowski撰写):

使用DAWG进行预测文本输入

使用三元DAG进行拼写校正

候选人查看:

关于CandidatesView你应该知道的第一件事:它是可选的。 事实上, LatinIME (android的默认软键盘)不使用它。 相反, LatinIME有自己的实现 – SuggestionStripView – 类似。 InputMethodService#onCreateCandidatesView()的默认行为是返回null。 如果您选择提供自己的实现,请不要覆盖此方法。

您需要确定CandidatesView应该是什么样子。 一种可能的实现可以是HorizontalScrollView 。 在评估您的建议后(例如,用户开始写“as”,您的建议逻辑会给您一个List其中包含“has”,“was”,“assist”,“ask”,“ask”,“询问“,”假设“),创建并将包含这些字符串的TextViews添加到HorizontalScrollView(LinearLayout) 。 这样,用户可以水平滚动并通过单击选择想要的单词。

由您决定是使用API​​还是自己处理CandidatesView 。 如果要使用API​​,请覆盖InputMetodService#onCreateCandidatesView() ,对您的自定义布局进行充气,然后将其返回。 保留对它的引用,以便您可以在需要时更新它。 要控制CandidatesView's可见性,请使用方法setCandidatesViewShown(boolean)

如果您正在创建自定义键盘,我建议您通过创建输入法 ,您可以查看示例代码 。 CandidateView可能就是你想要的。 它在上面的链接中解释。

如果您想提供内联拼写检查,您可以查看拼写检查框架

希望这可以帮助。