繁体   English   中英

SearchView崩溃时,搜索图标已替换为非功能性溢出

[英]Search icon replaced by non functional overflow on searchview collapse

我已经实现了应用内搜索功能。 当我保持方向固定时,它的工作效果很好。 但是,如果在输入查询后我改变了方向,将搜索视图折叠起来,那么我得到了溢出图标代替了我的搜索图标,当方向改变时,该图标又被修复了。 此外,单击时溢出图标也不显示搜索选项。

保持方向固定。

输入查询后更改方向。

这是我的菜单xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">
        <item android:id="@+id/search"
            android:title="@string/search_title"
        android:icon="@drawable/ic_search_white_24dp"
        android:orderInCategory="1"
        app:showAsAction="collapseActionView|ifRoom"
        app:actionViewClass="android.support.v7.widget.SearchView" />
   </menu>

这是我的片段onCreateOptionsMenu

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater){
        menu.clear();
        inflater.inflate(R.menu.options_menu, menu);
        searchString = getActivity().getPreferences(0).getString("searchString", null);
        final MenuItem searchMenuItem = menu.findItem(R.id.search);
        searchView = (SearchView) MenuItemCompat.getActionView(searchMenuItem);
        searchView.setIconifiedByDefault(true);
        searchView.setQueryHint(getResources().getString(R.string.search_hint));

        //set listener on search view to fire searchResultHandlerFrag
        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                Fragment fragment = new SearchHandlerFrag();
                Bundle bundle = new Bundle();
                bundle.putString("query", query);
                fragment.setArguments(bundle);
                searchView.clearFocus();
                getActivity().getSupportFragmentManager().beginTransaction().addToBackStack(null).replace(R.id.mainContainer, fragment).commit();
                return true;
            }

            @Override
            public boolean onQueryTextChange(String newText) {
                return false;
            }
        });

        //repopulate search view with existing search string, if any
        if (!TextUtils.isEmpty(searchString)) {
            if(!searchMenuItem.isActionViewExpanded())
                searchMenuItem.expandActionView();
            searchView.setQuery(searchString, false);
            searchView.clearFocus();
        }

        //trying to fix the overflow problem
        MenuItemCompat.setOnActionExpandListener(searchMenuItem, new MenuItemCompat.OnActionExpandListener() {
            @Override
            public boolean onMenuItemActionExpand(MenuItem item) {
                return true;
            }

            @Override
            public boolean onMenuItemActionCollapse(MenuItem item) {
                searchView.setIconified(true);
                return true;
            }
        });
    }

任何帮助将不胜感激。 提前致谢。

好的,很高兴回答我自己的问题。 窍门是将app:showAsAction="collapseActionView|ifRoom"更改为app:showAsAction="collapseActionView|ifRoom" app:showAsAction="collapseActionView|always" Signo。

尝试此操作,在xml定义更改中:

app:showAsAction="collapseActionView|ifRoom"

有:

app:showAsAction="always"

它应该始终使您的搜索图标可见,而不是显示collapseActionView图标。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM