應用場景:在頁面UI中含有密碼輸入框或者是需要輸入某些文字的控件的時候,彈出dialog同時自動彈出鍵盤,編輯後點擊取消或者是完成直接關閉,或者是點擊物理back鍵時自動隱藏掉軟鍵盤。
/** 軟鍵盤自動彈出 */
inputManager = (InputMethodManager) context
.getSystemService(Context.INPUT_METHOD_SERVICE);
Timer timer = new Timer(); // 設置定時器
timer.schedule(new TimerTask() {
public void run() { // 彈出軟鍵盤的代碼
inputManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
}
}, 300); // 設置300毫秒的時長
備註:對於剛跳到一個新的界面就要彈出軟鍵盤的情況上述代碼可能由於界面爲加載完全而無法彈出軟鍵盤。此時應該適當的延遲彈出軟鍵盤如300毫秒(保證界面的數據加載完成)
/** 軟鍵盤消失 */
public void dismiss() {
/*toggleSoftInput是成對使用的,當dialog消失的時候會執行該方法,會遇到一個問題,發現物理返回鍵和取消按
鈕等亂點擊時候軟鍵盤會錯亂,造成該消失不消失(換成下面的強制隱藏的方法)*/
//inputManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
/*強制隱藏掉軟鍵盤*/
inputManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
super.dismiss();
}
參考知識:
InputMethodManager inputMethodManager=
(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
//如果軟鍵盤已經打開,隱藏,如果沒有打開,打開
inputMethodManager.showSoftInput(mCommentBarEdit, InputMethodManager.SHOW_FORCED);
//強制打開
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
//強制隱藏