你需要重写InputMethodService方法onEvaluateInputViewShown(),以评估为真,即使是有硬键盘。请参阅onEvaluateInputShown()和InputMethodService的软输入视图部分。尝试创建您自己的自定义InputMethodService类来覆盖此方法。
编辑:source for onEvaluateInputShown()应该有所帮助。解决方案应该像创建自己的扩展InputMethodService的类一样简单,并重写这个只有几行的方法。确保将自定义服务添加到清单中。
从来源:
“重写此方法以控制在软输入区域应显示给用户的默认实现只显示输入视图时没有硬键盘或键盘被隐藏。如果你改变了这个返回值,只要返回的值可能改变了,就可以自己调用updateInputViewShown()来重新使用它。“
public boolean onEvaluateInputViewShown() {
Configuration config = getResources().getConfiguration();
return config.keyboard == Configuration.KEYBOARD_NOKEYS
|| config.hardKeyboardHidden == Configuration.KEYBOARDHIDDEN_YES;
}
Here你可以检查可能的配置。 Configuration.KEYBOARD_NOKEYS对应于没有硬件键盘。如果没有硬件键盘或硬件键盘被隐藏,则此方法返回true(应显示软键盘)。如果删除这两项检查并仅返回true,则即使连接了硬件键盘,也应使软件键盘可见。
尝试(未测试):
public boolean onEvaluateInputViewShown() {
return true;
}
由于这个返回值不会改变,你会不会需要调用updateInputViewShown()自己。如果您以不同方式修改此方法,请务必记住此详细信息。
我也有同样的问题。请告诉我该怎么做。我已经应用了下面的ans代码,但仍然软键盘不能正常工作。 – 2014-02-07 11:24:38