Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 关闭/隐藏kotlin中的软输入键盘_Android_Keyboard_Kotlin - Fatal编程技术网

Android 关闭/隐藏kotlin中的软输入键盘

Android 关闭/隐藏kotlin中的软输入键盘,android,keyboard,kotlin,Android,Keyboard,Kotlin,我有一个按钮和编辑文本。当用户在edittext中完成输入并按下按钮时,我想关闭软键盘 或其任何指南或参考链接。调用此函数可隐藏系统键盘: fun View.hideKeyboard() { val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager imm.hideSoftInputFromWindow(windowToken, 0) } 我稍微修改了@Serj

我有一个按钮和编辑文本。当用户在edittext中完成输入并按下按钮时,我想关闭软键盘


或其任何指南或参考链接。

调用此函数可隐藏系统键盘:

fun View.hideKeyboard() {
    val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
    imm.hideSoftInputFromWindow(windowToken, 0)
}

我稍微修改了@Serj Ardovic的反应

private fun hideKeyboard(view: View) {
    view?.apply {
        val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
        imm.hideSoftInputFromWindow(view.windowToken, 0)
    }
}

由于它确实符合我的要求

您可以使用新功能扩展所有
EditText
,当
EditText
的焦点丢失时,该功能将始终隐藏软键盘。如果要隐藏键盘,当某些
EditText
的焦点丢失时,只需将这行代码用于该
EditText

editText.hideSoftKeyboardOnFocusLostEnabled(true)
EditText
的扩展中,我们只需添加或删除自己的
OnFocusLostListener

fun EditText.hideSoftKeyboardOnFocusLostEnabled(enabled: Boolean) {
    val listener = if (enabled)
        OnFocusLostListener()
    else
        null
    onFocusChangeListener = listener
}
下面是
OnFocusLostListener
的实现,如果附加的
视图的焦点丢失,它将隐藏键盘

class OnFocusLostListener: View.OnFocusChangeListener {
    override fun onFocusChange(v: View, hasFocus: Boolean) {
        if (!hasFocus) {
            val imm = v.context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
            imm.hideSoftInputFromWindow(v.windowToken, 0)
        }
    }
}
class OnFocusLostListener: View.OnFocusChangeListener {
    override fun onFocusChange(v: View, hasFocus: Boolean) {
        if (!hasFocus) {
            val imm = v.context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
            imm.hideSoftInputFromWindow(v.windowToken, 0)
        }
    }
}