为什么软键盘自动出现在clearFocus()上?

时间:2018-11-13 15:22:22

标签: android android-layout

当用户单击完成按钮时,我正在编辑文本上调用clearFocus。但是,当我执行此操作时,应用程序将重点放在容器上,并出现一个键盘。当我添加一个虚拟视图时,它会集中在该视图上,但仍然会出现键盘!该键盘没有任何作用。

1 个答案:

答案 0 :(得分:0)

您可以使用 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

在该线程Hide Keyboard上查看更多答案