我不知道这是否与您的问题有关,但是当有些设备有时会出现“不同步”并隐藏我想要显示和隐藏时,我仅使用InputMethodManager.toggleSoftInput()反之亦然。
我采取的事实优势,取得了一些成功,虽然IMM.showSoftInput()不会显示键盘,IMM.hideSoftInputFromWindow()将可靠密切的,所以当我想展示我现在调用IMM.hideSoftInputFromWindow(),然后是IMM.toggleSoftInput(),并使用IMM.hideSoftInputFromWindow()自己来隐藏一个键盘。
[一天后...]
编写昨日上述使我重新思考我是如何使用软键盘处理(我的意思是,showSoftinput()做工作,只是没有我们预期的方式到),所以这里有更好的方法:
首先,你需要设置你的视图,以便Android知道它可以有一个软键盘 - 在InputMethodManager的文档中描述。在我的情况我已经从GLSurfaceView衍生的单一视图,所以我说:
setFocusable(true);
setFocusableInTouchMode(true);
的构造函数,然后下面的2所覆盖:
@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs)
{
outAttrs.actionLabel = "";
outAttrs.hintText = "";
outAttrs.initialCapsMode = 0;
outAttrs.initialSelEnd = outAttrs.initialSelStart = -1;
outAttrs.label = "";
outAttrs.imeOptions = EditorInfo.IME_ACTION_DONE | EditorInfo.IME_FLAG_NO_EXTRACT_UI;
outAttrs.inputType = InputType.TYPE_NULL;
return new BaseInputConnection(this, false);
}
@Override
public boolean onCheckIsTextEditor()
{
return true;
}
现在我可以显示键盘:
InputMethodManager mgr = (InputMethodManager)mActivity.getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.showSoftInput(mView, 0);
并通过视图的onKeyUp()和onKeyDown()方法报告按键。
掩藏它使用hideSoftInputFromWindow仍然完成()
这是我听过的最好的建议。不幸的是,我不能在实际遇到问题的设备上测试此功能,因为我们没有任何功能,但是我会试用此功能。如果有效,我会将其标记为答案。谢谢! –
试过这个和它的一些变化,但问题仍然出现在Droid仿生。我所做的任何事似乎都无法成功地打开该设备上的软键盘。 –
你有机会获得仿生吗?我真的很好奇,如果键盘适用于“PocketSat3演示”(免费从市场)。该应用程序启动与键盘兼容性测试。 – jimkberry