如何在选择项目后完全折叠SearchView?

Seb*_*ian 26 android android-actionbar searchview

几周以来,我一直在努力解决这个问题.我有一个全球搜索,提供自定义列表视图,其中包含用户类型的建议.当用户选择一个选项时,我希望searchview返回到完全折叠状态.

在此输入图像描述

相反,它会缩小,但会保持略微扩大的视野.

在此输入图像描述

我已经抛出一切,我可以在这件事上找到它关闭它,但不能为我的生活得到正确的方法.这是功能:

    final SearchView.OnCloseListener closeListener = new SearchView.OnCloseListener() {

        @Override
        public boolean onClose() {
            return closeSearch();
        }
    };

    protected boolean closeSearch() {
    _searchView.clearFocus();
    _searchView.setQuery("", false);
    _searchView.setFocusable(false);
    _searchMenuItem.collapseActionView();
    isSearchFragmentVisible(false);
    return false;
}
Run Code Online (Sandbox Code Playgroud)

然后,当从自定义"建议"列表视图中选择项目时,手动调用关闭搜索.

sia*_*ach 53

而不是呼叫_searchView.onActionViewCollapsed()呼叫menuItem.collapseActionView()在哪里_searchView = menuItem.getActionView().

  • 它适用于API级别14及更高级别.如果使用compat库,可以使用MenuItemCompat.collapseActionView(menuItem); (10认同)
  • 在我的情况下.collapseActionView()使用android支持v7小部件SearchView不起作用.而是调用onActionViewCollapred()作为exprected .. (3认同)

Seb*_*ian 43

找到了.电话应该是_searchView.onActionViewCollapsed().为什么你称之为"听众"风格的方法(即以'on'开头的方法)超出了我.

  • 我同意Sebastian:在ActionBar中的android.support.v4.view.MenuItemCompat的menuItem中使用来自android.support.v7.widget.SearchView的searchView,不能折叠searchView,调用`MenuItemCompat.collapseActionView(searchMenuItem);`我不得不在"onQueryTextSubmit"回调中调用`searchView.onActionViewCollapsed();`.键盘也被驳回了.我的键盘"确定"按钮标签在连续调用searchView之间在"确定"和"下一步"之间切换.我不知道为什么. (2认同)

rol*_*lan 19

@sebastian说实际上并不正确.

我已经被困在这个问题上了一段时间,但最后我设法以正确的方式处理它.你想调用menuSearch.collapseActionView(); 代替.此方法将调用onActionViewCollapsed,您可以覆盖它.所以你不要打电话给听众;)

MenuItem menuSearch = menu.findItem(R.id.itemSearch);
SearchView searchView = (SearchView) menuSearch.getActionView();
//Don't use next line
//searchView.onActionViewCollapsed();
menuSearch.collapseActionView();
Run Code Online (Sandbox Code Playgroud)


hak*_*ine 11

如果您使用工具栏(android.support.v7.widget.Toolbar)和相应的SearchView(android.support.v7.widget.SearchView),它可以正常工作:

    searchView.setQuery("", false);
    searchView.clearFocus();
    searchView.setIconified(true);
Run Code Online (Sandbox Code Playgroud)


Ste*_*ane 7

你应该清除搜索,删除焦点,然后调用:

searchView.setIconified(true);
Run Code Online (Sandbox Code Playgroud)