7

InputMethodManager是应用程序可以用来与系统键盘交互的服务。喜欢的编辑器EditText也使用它来间接通知键盘更改(例如,updateSelection)。

我可以得到这样的InputMethodManager参考

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

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

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

更新

如果无法使用标准输入法管理器,这里有一些线索可以帮助我实现我自己的自定义输入法管理器。

4

2 回答 2

1

不,你不能。因为如果您从 继承InputMethodService,您的键盘将可用于其他应用程序。只有一种方法可以创建应用内键盘,即View在您的布局中使用简单。在此示例 中,他们使用自定义应用内键盘InputMethodManager连接到EditText.

于 2017-09-03T13:14:09.110 回答
1

你应该实施你的。

InputMethodService 提供了 InputMethod 的标准实现,最终实现可以派生和定制。有关编写输入法的基础知识,请参阅基类 AbstractInputMethodService 和 InputMethod 接口。

于 2017-09-02T13:22:43.970 回答