我可以在自定义应用内键盘上使用Android InputMethodManager吗?

时间:2017-07-20 05:27:42

标签: android keyboard custom-keyboard inputmethodmanager

InputMethodManager是应用可用于与系统键盘交互的服务。像EditText这样的编辑也使用它来间接通知键盘更改(例如,updateSelection)。

我可以像这样InputMethodManager获得参考

InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);

我的问题是,这似乎只适用于系统键盘。我可以将InputMethodManager用于custom in-app keyboard吗?如果只是一个孤立的应用程序我不会关心,但我在一个库中包含一个自定义键盘,将在许多应用程序中使用。我需要一种标准的方式让编辑器与键盘进行通信。

我是否必须编写自己的输入法管理器,或者是否有办法在我的自定义应用内键盘中使用标准InputMethodManager

更新

以下是一些线索,说明如果无法使用标准输入法,我将如何实现自己的自定义输入法管理器。

2 个答案:

答案 0 :(得分:1)

你应该实施你的。

  

InputMethodService提供了InputMethod的标准实现,最终实现可以从中派生和自定义。有关编写输入方法的基础知识的更多信息,请参阅基类AbstractInputMethodService和InputMethod接口。

答案 1 :(得分:1)

不,你不能。因为如果您继承InputMethodService,您的键盘将可用于其他应用。只有一种方法可以创建应用内键盘,它在您的布局中使用简单的View。在这个例子中  custom in-app keyboard他们使用InputMethodManager连接到EditText