天天看点

Android 软键盘显示与隐藏Android 软键盘显示与隐藏

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 官方模拟器
  • 测试情况

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

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