Android 软键盘显示与隐藏

    技术2023-05-28  19

    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 官方模拟器

    测试情况

    进入页面 -> 软键盘显示-> 返回调用隐藏软键盘正常执行隐藏

    进入界面 -> 软键盘显示-> 手动隐藏软键盘->返回调用隐藏软键盘,返回后键盘正常处于隐藏状态

    Processed: 0.020, SQL: 8