当前位置: 首页 > 知识库问答 >
问题:

Searchview清除对隐藏键盘的关注

傅涵忍
2023-03-14

用户按下隐藏键盘按钮或后退按钮。因此,当用户隐藏键盘时,我需要清除对搜索视图的关注。

我试过这个,但它不工作。当用户隐藏键盘时,焦点仍然存在。

searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                searchView.clearFocus();
                return false;
            }

            @Override
            public boolean onQueryTextChange(String newText) {
                app.requests.getApi().search(newText).enqueue(SearchFragment.this);
                return false;
            }
        });

这是:

searchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus) {
                    app.functions.logWrite("has focus to searchview");
                } else {
                    //code
                }
            }
        });

共有2个答案

督宏旷
2023-03-14

这就是我通过覆盖onBackPressed()

@Override
    public void onBackPressed() {
        if (!searchView.isIconified()) {
            searchView.setIconified(true);
            ANY_VIEW_IN_YOUR_LAYOUT.requestFocus();
        } else
            super.onBackPressed();
    }

希望这有帮助。请随时要求澄清。。。

云宜人
2023-03-14

好吧,试试这个,不幸的是,它需要使用一个库,但它让它变得更容易。

在你的身体里。格雷德尔:加上这个:

dependencies {
    implementation 'net.yslibrary.keyboardvisibilityevent:keyboardvisibilityevent:3.0.0-RC2'
}

在声明SearchView的片段/类中,使用KeyboardVisibilityEvent库注册键盘事件,如下所示:

KeyboardVisibilityEvent.setEventListener(
    getActivity(),
    new KeyboardVisibilityEventListener() {
        @Override
        public void onVisibilityChanged(boolean isOpen) {
            if (!isOpen) {
               View focusedView = getWindow().getCurrentFocus();
               if (focusedView != null && focusedView instanceof SearchView) { // does SearchView have focus?
                    searchView.clearFocus();
                }
            }
        }
    });

search chView.clearFocus();假设您在层次结构中有另一个可聚焦的视图,如果不将其添加到片段布局中:

android:focusableInTouchMode="true"

或者,只需调用focus()

 类似资料:
  • 我想在AlertDialog关闭后隐藏软键盘,但它仍然可见。这是我的代码:

  • 我有一种情况,我打开,我希望在中有光标(保持焦点),但一开始不显示键盘。当且仅当用户按下时,我想显示键盘(光标应该完好无损)

  • 我有一个AutoCompleteTextView,它像往常一样在用户键入3个字母后提供建议。一旦我触摸建议列表,我想隐藏软键盘一次。我在下面用表格布局所做的只是在单击除建议列表之外的任何地方时隐藏键盘。 可扩展置标语言 爪哇岛 用于自定义列表的 XML

  • 我正试图在Kotlin中编写一个简单的Android应用程序。我的版面中有一个编辑文本和一个按钮。在编辑字段中写入并单击按钮后,我想隐藏虚拟键盘。 关于用Java实现Android软键盘,有一个流行的问题是关闭/隐藏Android软键盘,但据我所知,Kotlin应该有一个替代版本。我该怎么做?

  • 我需要隐藏软键盘以响应单击按钮。我看到了一些关于这方面的帖子,我尝试了: 这很有效。但现在我有两个EditText视图。无论选择了哪个EditText,现在如何隐藏软键盘?我也试过了 ,但那不起作用... 谢谢你的帮助! 编辑:找到解决方案。贴在下面。

  • 我有一个按钮和编辑文本。当用户在编辑文本中完成输入并按下按钮时,我想关闭我的软键盘。 或它的任何指南或参考链接。