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)
}
}
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 官方模拟器
测试情况
进入页面 -> 软键盘显示-> 返回调用隐藏软键盘正常执行隐藏
进入界面 -> 软键盘显示-> 手动隐藏软键盘->返回调用隐藏软键盘,返回后键盘正常处于隐藏状态