1. 软键盘展开
(1) 使用InputMethodManager展开键盘
//编辑视图获取焦点
editText.requestFocus();
//展开软键盘
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText,InputMethodManager.SHOW_IMPLICIT);
在上述代码中,editText
是你想要显示键盘的EditText
控件的引用。showSoftInput
方法的第一个参数是你想要显示键盘的View
,第二个参数是一个标志,通常为InputMethodManager.SHOW_IMPLICIT
,表示如果没有焦点,也会显示键盘。
展开键盘前需要让编辑器获取焦点,如果展开后再获取焦点,可能会获取焦点失败。
(2) 设置软键盘状态
//编辑视图获取焦点
editText.requestFocus();
//展开软键盘
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
在上述代码中,toggleSoftInput
方法的第一个参数是InputMethodManager.SHOW_FORCED
,表示强制显示键盘,第二个参数通常为0。
(3) 获取焦点自动展开
获取焦点时,通常会自动触发软键盘展开。
editText.requestFocus();
2. 软键盘收起
(1) 使用InputMethodManager收起键盘
//收起软键盘
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
在上面的代码中,editText
是你的EditText
控件的引用。hideSoftInputFromWindow
方法接受两个参数:第一个参数是与输入法交互的窗口标记,通常是EditText
的getWindowToken()
方法提供的,第二个参数是一个标志,通常为0。
(2) 设置软键盘状态
//收起软键盘
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
上述代码中的toggleSoftInput
方法会切换软键盘的状态。第一个参数指定了软键盘的显示状态,InputMethodManager.HIDE_IMPLICIT_ONLY
表示只在当前焦点不是EditText
时才隐藏软键盘。第二个参数同样是一个标志,通常为0。
(3) 失去焦点自动收起
失去焦点时,通常会自动触发软键盘收起。
editText.clearFocus();
tag: android键盘,android软键盘