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

时间:2012-11-28 20:26:22

标签: android android-actionbar searchview

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

enter image description here

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

enter image description here

我已经抛出一切我能找到的东西来关闭它,但不能为我的生活得到正确的方法。这是功能:

    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;
}

当从自定义“建议”列表视图中选择项目时,手动调用关闭搜索。

10 个答案:

答案 0 :(得分:52)

而不是致电_searchView.onActionViewCollapsed()来调用menuItem.collapseActionView() _searchView = menuItem.getActionView()

答案 1 :(得分:42)

找到它。通话应为_searchView.onActionViewCollapsed()。为什么你称之为“听众”风格的方法(即以'on'开头的方法)超出了我。

答案 2 :(得分:17)

@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();

答案 3 :(得分:11)

如果你正在使用工具栏(android.support.v7.widget.Toolbar)和相应的 SearchView(android.support.v7.widget.SearchView)它,这工作:

    searchView.setQuery("", false);
    searchView.clearFocus();
    searchView.setIconified(true);

答案 4 :(得分:6)

您应该清除搜索,移除焦点,然后致电:

searchView.setIconified(true);

答案 5 :(得分:3)

这对我有用,它也默认关闭了键盘

MenuItemCompat.collapseActionView(menuItem);

答案 6 :(得分:2)

根据最新的documentationsource code iff false,返回iconifiedByDefault == true已足够。

您是否有机会定义iconifiedByDefault="false"或致电setIconifiedByDefault(false)

答案 7 :(得分:1)

searchView.setIconified(true); // Call this twice
searchView.setIconified(true);

它对我有用。

答案 8 :(得分:0)

我已经改变了“Go'按钮到'下一步',所以唯一适用于我的方法(在API 19上)就是打字     closeBtn.performClick();     closeBtn.performClick(); (在OnEditorActionListener的{​​{1}}中点击'关闭'按钮两次。 您可以像这样获得AutoCompleteTextView

AutoCompleteTextView

答案 9 :(得分:0)

这对我有用searchMenuItem.collapseActionView();