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

时间:2018-08-04 13:16:18

标签: android focus searchview soft-keyboard

我正在使用SearchView从蓝牙条形码阅读器输入数字。

SearchView的重点如下:

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

问题是当SearchView聚焦时,会出现软件键盘,而我想将其隐藏。

隐藏键盘的方法我很了解

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

在上一个线程中,有人告诉我可以将OnClickListener事件用于SearchView,但是我发现此事件在显示键盘之前发生。

感谢任何评论或建议。

2 个答案:

答案 0 :(得分:1)

我当前正在创建一个应用程序,并且有一个功能可以在键盘专注于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);
}

希望这会有所帮助!

编辑:我发现我发布的代码不是我的,我只是从另一个StackOverflow帖子中复制粘贴了!这是the original post,所有功劳归功于原始海报!

答案 1 :(得分:1)

只需使用它并传递您的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);
    }

希望它会有所帮助。