有時候,需要強制隱藏Android輸入法鍵盤,如當前鍵盤正在顯示,這個時候點擊了側滑面板,就要強制隱藏輸入法鍵盤。網上常見的方法有:
1、
InputMethodManager imm = (InputMethodManager) getActivity()
.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
這個是讓輸入法狀態發生逆轉,如果當前未顯示則顯示出來。如果顯示出來,則隱藏。因此是不符合本文所說的應用場景的。
2、
imm.hideSoftInputFromInputMethod(passwdEdit.getWindowToken(), 0);
測試在低于4.4系統的手機上無效。
3、
imm.hideSoftInputFromInputMethod(getActivity().getCurrentFocus().getWindowToken(), 0);
不起作用
上面的方法沒有效果,下面才是解決方式:
4、
imm.hideSoftInputFromWindow(passwdEdit.getWindowToken(), 0);
另外獲取鍵盤是否處在打開關閉狀態,系統方法是沒用的,如下:
InputMethodManager imm = (InputMethodManager) this
.getSystemService(Context.INPUT_METHOD_SERVICE);
boolean isOpen=imm.isActive();
Log.i(TAG, "imm.isActive() = " + isOpen);
以上代碼獲取的isOpen一直為true