之前的写法有问题,这里记下免得以后再用错:
/**
* 显示键盘
*
* @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()方法之前执行,否则会出现隐藏后又弹出的奇怪问题。
本文介绍了如何在Android应用中实现软键盘的显示与隐藏,并提供了具体的代码实现。此外还介绍了如何通过布局属性防止软键盘遮挡底部控件,以及如何设置默认键盘状态。
2307





