一尘不染

如何以编程方式关闭/隐藏 Android 软键盘?

javascript

我的布局中有一个EditText和一个Button

在编辑字段中写入并单击 后Button,我想在触摸键盘外部时隐藏虚拟键盘。我认为这是一段简单的代码,但我在哪里可以找到它的示例?


阅读 240

收藏
2022-01-10

共1个答案

一尘不染

您可以使用InputMethodManager强制 Android 隐藏虚拟键盘,调用hideSoftInputFromWindow,传入包含焦点视图的窗口的标记。

// Check if no view has focus:
View view = this.getCurrentFocus();
if (view != null) {  
    InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}

这将强制在所有情况下隐藏键盘。在某些情况下,您将希望InputMethodManager.HIDE_IMPLICIT_ONLY作为第二个参数传入,以确保仅在用户没有明确强制显示键盘时才隐藏键盘(通过按住菜单)。

注意:如果您想在 Kotlin 中执行此操作,请使用: context?.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager

Kotlin 语法

// Only runs if there is a view that is currently focused
this.currentFocus?.let { view ->
    val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as? InputMethodManager
    imm?.hideSoftInputFromWindow(view.windowToken, 0)
}
2022-01-10