Android 软键盘显示与隐藏
0. 场景
同一个activity情况下通过fragment进行页面切换
进入编辑页面的Fragment后,该页面的EditText控件自动获取焦点并弹出软键盘
离开该Fragment页面时候需要隐藏软键盘。避免返回到了其他页面,而软键盘却依然存在。如果软键盘已经隐藏,也需确保返回到上一个页面时,软键盘不会从隐藏状态转换为弹出状态。这一点是使用toggleSoftInput方法时容易出现的故障,当然也可能是我对该方法的使用不当。
1. 代码
/**
* 隐藏软键盘
*/
fun hideSoftKeyboard() {
val imm = activity.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
val focusedView = activity.currentFocus
focusedView?.let {
imm.hideSoftInputFromWindow(it.windowToken, 0)
}
}
/**
* 让EditText获取焦点并显示软键盘
*/
fun showSoftKeyboard(editText: EditText) {
editText.requestFocus()
val imm = activity.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.showSoftInput(mSearchBar, 0)
}
override fun onBackPressed(): Boolean {
hideSoftKeyboard()
return super.onBackPressed()
}
2. 自测情况
- 测试环境
Android 7.0 官方模拟器
- 测试情况
进入页面 -> 软键盘显示-> 返回调用隐藏软键盘正常执行隐藏
进入界面 -> 软键盘显示-> 手动隐藏软键盘->返回调用隐藏软键盘,返回后键盘正常处于隐藏状态