即使有硬键盘,您也需要覆盖 InputMethodService 方法 onEvaluateInputViewShown() 以评估为 true。请参阅onEvaluateInputShown()和InputMethodService的软输入视图部分。尝试创建您自己的自定义 InputMethodService 类来覆盖此方法。
编辑:onEvaluateInputShown() 的来源应该有所帮助。解决方案应该像创建您自己的扩展 InputMethodService 的类并覆盖这个方法一样简单,该方法只有几行长。确保也将您的自定义服务添加到您的清单中。
来源:
"覆盖这个来控制何时应该向用户显示软输入区域。默认实现只在没有硬键盘或键盘被隐藏时显示输入视图。如果你改变这个返回的内容,你需要调用 updateInputViewShown () 每当返回的值可能已更改以重新评估和应用它时您自己。”
public boolean onEvaluateInputViewShown() {
Configuration config = getResources().getConfiguration();
return config.keyboard == Configuration.KEYBOARD_NOKEYS
|| config.hardKeyboardHidden == Configuration.KEYBOARDHIDDEN_YES;
}
以下是您可以检查的可能配置。Configuration.KEYBOARD_NOKEYS 对应无硬件键盘。如果没有硬件键盘或隐藏了硬件键盘,此方法返回 true(应显示软键盘)。删除这两项检查并简单地返回 true 应该会使软件键盘可见,即使连接了硬件键盘也是如此。
尝试(未测试):
public boolean onEvaluateInputViewShown() {
return true;
}
由于此返回值不会更改,因此您无需自己调用 updateInputViewShown()。如果您以不同方式修改此方法,请务必记住此详细信息。