【问题标题】:Can I use the Android InputMethodManager on a custom in-app keyboard?我可以在自定义应用内键盘上使用 Android InputMethodManager 吗?
【发布时间】:2017-12-25 15:05:30
【问题描述】:

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

我可以像这样得到InputMethodManager的引用

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

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

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

更新

如果无法使用标准输入法管理器,我可以如何实现自己的自定义输入法管理器。

【问题讨论】:

  • 我决定走自己的自定义输入法管理器的路线。我认为无法使用InputMethodManager 系统,因为它涉及手机的安全问题。但是,我添加赏金只是为了确保在我完全放弃这个想法之前。

标签: android keyboard custom-keyboard inputmethodmanager


【解决方案1】:

你应该实现你的。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 对不起,第一次我错了,没看懂你的问题。我已经更新了我的答案。
    • 您链接到的示例是我的示例。它不使用InputMethodManager 连接到EditText。它只是直接连接它。但我想使用InputMethodManager,这就是导致这个问题的原因。
    • @Suragch 如果不从 InputMethodManager 继承,您将无法访问键盘
    猜你喜欢
    • 2019-03-25
    • 1970-01-01
    • 2011-03-12
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    • 2015-10-08
    相关资源
    最近更新 更多