应用场景:在页面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);
//强制隐藏