如何在使用SHOW_FORCED显示键盘后强制移除键盘

7
我展示带有代码的键盘。
        ((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE))
                .toggleSoftInput(InputMethodManager.SHOW_FORCED,
                        InputMethodManager.HIDE_IMPLICIT_ONLY);
        etContent.requestFocus();

在下一步中,我会充气一个新的LinearLayout并调用setContentView(newLayout),但键盘仍然存在。如何强制隐藏键盘?我尝试过使用


getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

但是这并没有起到帮助的作用。有人能提供解决方案吗?

请查看此答案 -> https://dev59.com/DGw15IYBdhLWcg3wYawx#7832810 - Yilmaz Guleryuz
2个回答

7

试一下这个。我已经多次使用它来隐藏软输入。

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getContentView().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);

我给你点赞,谢谢。如果你看到这条评论,请问你知道为什么 setSoftInputMode() 有时候可以解决问题,有时候又不行吗? - user3386180
1
我不是100%确定,但我想如果您没有传递任何参数,该方法可能会有默认值。 - JoeLallouz
1
这是非常有帮助的答案,但是在我的Activity中无法解析getContentView(),所以我只需将其替换为getWindow().getDecorView()。现在它对我来说完美地工作了。 :) - Ekta Bhawsar

1
尝试一下,它应该可以工作。
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getContentView().getWindowToken(), 0);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接