如何在 SearchView 聚焦后隐藏软件键盘?

How to hide the software keyboard after a SearchView is focused?

我正在使用 SearchView 输入来自蓝牙条形码的数字 reader。

SearchView 的焦点如下:

svActListaPedidosFragmento.setFocusable(true);
svActListaPedidosFragmento.setIconified(false);

问题是SearchView聚焦时出现软键盘,想隐藏。

隐藏键盘的方法我很懂

问题是我找不到告诉我键盘出现的事件。

在之前的帖子中,有人告诉我可以使用 SearchView 的 OnClickListener 事件,但我发现此事件发生在键盘显示之前。

感谢任何意见或建议。

我目前正在创建一个应用程序,我有一个功能可以在键盘聚焦于 EditText 时隐藏键盘。 这是:

static void editTextHideKeyboard(Context context, EditText editText) {
    InputMethodManager imm = (InputMethodManager) context.getSystemService(LoginActivity.INPUT_METHOD_SERVICE);
    if (imm!=null)imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
}

希望对您有所帮助!

编辑:我发现我 post 编辑的代码不是我的,我只是从另一个 Whosebug post 复制粘贴的!这是 the original post,所有功劳归于原作 poster!

只需使用它并将您的 editText 和布尔类型参数传递给显示或键盘

private void inputModeChange(final EditText editText, final boolean showKeyboard) {
        editText.postDelayed(new Runnable() {
            @Override
            public void run() {
                // TODO Auto-generated method stub
                if (showKeyboard) {
                    InputMethodManager keyboard = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
                    keyboard.showSoftInput(editText, 0);
                } else if (showKeyboard == false) {
                    InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
                    imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);

                }
            }
        }, 50);
    }

希望对您有所帮助。