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