InputMethodManager
是应用程序可用于与系统键盘交互的服务。像EditText
这样的编辑器也使用它来间接通知键盘更改(例如,updateSelection
(。
我可以像这样获得对InputMethodManager
的引用
InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
我的问题是这似乎仅适用于系统键盘。我可以将InputMethodManager
用于自定义应用内键盘吗?如果它只用于一个孤立的应用程序,我不会在乎,但我在一个库中包含一个自定义键盘,该键盘将在许多应用程序中使用。我需要一种标准的方式让编辑者与键盘进行通信。
我是否必须编写自己的输入法管理器,或者有没有办法将标准InputMethodManager
与我的自定义应用内键盘一起使用?
更新
以下是一些线索,说明如果无法使用标准输入法管理器,我如何实现自己的自定义输入法管理器。
InputMethodManager
(文档( (源代码(InputMethod
接口InputMethodSession
界面KeyboardView.OnKeyboardActionListener
接口(键盘实现它(InputMethodService
(键盘扩展( (文档( (源代码(
你应该实现你的。
InputMethodService 提供了 InputMethod 的标准实现,最终实现可以从中派生和自定义。有关编写输入法的基础知识的详细信息,请参阅基类 AbstractInputMethodService 和 InputMethod 接口。
不,你不能。因为如果您继承自InputMethodService
,您的键盘将可用于其他应用程序。只有一种方法可以创建应用内键盘,即在布局中使用简单的View
。在此示例中 他们使用InputMethodManager
自定义应用内键盘连接到EditText
。