【问题标题】:Android: how do I get SearchView close button to return the setQueryHint()?Android:如何让 SearchView 关闭按钮返回 setQueryHint()?
【发布时间】:2017-09-27 20:41:28
【问题描述】:

我的工具栏中有一个搜索图标,用于搜索 RecyclerView 列表。

图一:

点击图标时,工具栏显示 SearchView 的 setQueryHint " 在这里搜索...”。

图二:

当在 SearchView 行上输入一个字符时,在本例中为数字“4”,然后在 RecyclerView 列表中搜索它。如果未找到该字符,则该字符右侧会出现一个关闭按钮“x”:

图 3:

我的问题是,单击关闭按钮“x”时的默认行为是关闭 SearchView,这会将视图返回到图 1,即初始图标视图。我想让视图返回到 SearchView 行“在此处搜索...”,即图 2。我尝试在 mCloseButton.OnClickListener 中的 SearchView 上使用 setQueryHint,但它不起作用。请参阅下面 mCloseButton OnClickListener() 中的 **,了解我尝试过的其他 sn-ps 不起作用。我在这里错过了什么?

menu.xml

<item android:id="@+id/action_search"
    android:title="@string/search_title"
    android:icon="@drawable/ic_action_search"
    app:actionViewClass="android.support.v7.widget.SearchView"
    app:showAsAction="always|collapseActionView"  />   

Activity

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    getMenuInflater().inflate(R.menu.cardview_menu, menu);

    final MenuItem searchItem = menu.findItem(R.id.action_search);

    if (adapter == null || adapter.getItemCount() == 0) {
        searchItem.setVisible(false);
    } else {
        searchItem.setVisible(true);
        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        final SearchView mSearchView = (SearchView) MenuItemCompat.getActionView(searchItem);            
        mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
        final EditText mSearchEditText = (EditText)mSearchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
        final ImageView mCloseButton = (ImageView) mSearchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn);
        mSearchView.setQueryHint(" Search here...");

        MenuItemCompat.setOnActionExpandListener(searchItem, new MenuItemCompat.OnActionExpandListener() {

            @Override
            public boolean onMenuItemActionExpand(MenuItem item) {
                return true;  // Return true to expand action view
            }

            @Override
            public boolean onMenuItemActionCollapse(MenuItem item) {

                adapter.clear();
                adapter.addAll(allList);
                return true;  // Return true to collapse action view
            }
        });

        mCloseButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                //Clear the query
                mSearchView.setQuery("",false);
                // below lines were all tried and do not work
                **mSearchView.setQueryHint(" Search here...");**
                **mSearchView.setIconified(false);**
                **mSearchView.onActionViewCollapsed);**
                **MenuItemCompat.expandActionView(searchitem);**
                adapter.clear();
                adapter.addAll(allList);
            }
        });

...
return super.onCreateOptionsMenu(menu);
}            

【问题讨论】:

  • 什么不起作用:点击侦听器或查询清除?
  • 查询清楚。我希望查询清楚地返回到用户可以输入另一个搜索字符的位置,而不是返回到看到搜索图标并不得不再次单击搜索图标的初始状态。

标签: java android android-actionbar android-toolbar searchview


【解决方案1】:

尝试使用 mSearchView.setIconified(false)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 2013-02-23
    相关资源
    最近更新 更多