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



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

最新更新