之前的写法有问题,这里记下免得以后再用错:
/**
* 显示键盘
*
* @param et 输入焦点
*/
public void showInput(final EditText et) {
et.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
imm.showSoftInput(et, InputMethodManager.SHOW_IMPLICIT);
}
/**
* 隐藏键盘
*/
protected void hideInput() {
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
View v = getWindow().peekDecorView();
if (null != v) {
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
}
另外,避免软键盘弹出会覆盖底部控件的方法是在布局文件根布局加上一个属性:
android:fitsSystemWindows="true"
设置默认不弹出键盘:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE | WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);// 设置默认键盘不弹出
注意:最新发现,隐藏软键盘不可以放在onDestroy()方法里面执行,而应该放在finish()方法之前执行,否则会出现隐藏后又弹出的奇怪问题。