总结键盘显示隐藏几种方案
一、普通方式
这种方式比较普遍,是通过InputMethodManager
自动显示隐藏(之前显示则隐藏,之前隐藏则显示)
InputMethodManager imm =(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
强制显示隐藏
显示:InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(view,InputMethodManager.SHOW_FORCED);
隐藏:
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
缺点:只能被动的修改状态。无法预先控制,在点击EditText时,总会自动弹出软键盘
二、修改Flag
强制隐藏(可以预先隐藏,点击EditText仍不会弹出)
getWindow().addFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
缺点:会使当前界面中的所有键盘弹出时间失效,无法针对某个EditText
恢复
getWindow().clearFlags( WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);