我不知道這是否與您的問題有關,但是當有些設備有時會出現「不同步」並隱藏我想要顯示和隱藏時,我僅使用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