Android系统除了可以使用InputMethodManager来弹出输入法外,还可以使用window弹出输入法,特别是在弹窗里有Edittext需要自动弹出输入法时,使用window弹出输入法比较好使,写法如下:
// 获取窗口
Window window = requestDialog.getWindow();
//弹出输入法
window.clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
// tip:若没有成功弹出输入法,请先调用mEditText.requestFocus();再调用上述代码
另外也写下使用InputMethodManager弹出输入法的方法:
//获取输入法管理器
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
//带视图打开输入法
imm.showSoftInput(this,InputMethodManager.SHOW_FORCED);
//使用toggleSoftInput可以单独打开输入法
imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
最后判断输入法是否已打开:
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
//已打开返回true,没打开返回false
boolean isOpen = imm.isActive();