最近在做类似微信朋友圈发说说和评论功能时,需要用代码手动地控制输入法的关闭和打开,遇到了一些诡异地的问题分享给大家,希望可以帮助遇到同样问题的同学
EditText etContent=findViewById(R.id.et_content)
1.打开输入法
InputMethodManager inputMethodManager = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
// 接受软键盘输入的编辑文本或其它视图
inputMethodManager.showSoftInput(etContent,InputMethodManager.SHOW_FORCED);
2.关闭输入法
(1)EditText获得焦点
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(etContent.getWindowToken(), 0); //强制隐藏键盘
(2)EditText失去焦点
InputMethodManager inputMethodManager = (InputMethodManager) context
.getSystemService(Context.INPUT_METHOD_SERVICE);
if (inputMethodManager.isActive()) {
inputMethodManager.hideSoftInputFromWindow(((Activity) context)
.getCurrentFocus().getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
}
3.获取输入法的状态
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
boolean isOpen=imm.isActive();