Search code examples
androidandroid-fragmentssearchview

How to collapse searchView


When my fragment is instantiated the searchview is already in expanded state, I want it to be initially collapsed into search icon. This is my xml

Search.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:yourapp="http://schemas.android.com/apk/res-auto"    >
<item
    android:id="@+id/search"
    android:title="@string/search_hint"
    android:showAsAction="always"
    yourapp:showAsAction="always"
    android:icon="@drawable/ic_action_search"

    yourapp:actionViewClass="android.support.v7.widget.SearchView" />

</menu>

My fragment class

@Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        final InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(getView().getWindowToken(), 0);
    }
    public ContentsFragment() {
        // TODO Auto-generated constructor stub
        this.setHasOptionsMenu(true);
    }

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        Flag.f=1;
        super.onCreateOptionsMenu(menu, inflater);
        menu.clear();
        inflater.inflate(R.menu.search, menu);

         SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);
          MenuItem searchItem = menu.findItem(R.id.search);
          SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
        searchView.setQueryHint("Search Articles");

        if (null != searchView) {
            searchView.setSearchableInfo(searchManager
                    .getSearchableInfo(getActivity().getComponentName()));
            searchView.setIconifiedByDefault(false);
        }

        SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() {
            public boolean onQueryTextChange(String newText) {
                // this is your adapter that will be filtered
                return true;
            }

            public boolean onQueryTextSubmit(String query) {
                Flag.querytext=query;
                final InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(getView().getWindowToken(), 0);
                QueryFragment fragment2 = new QueryFragment();
                FragmentManager fragmentManager = getFragmentManager();
                FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                fragmentTransaction.replace(R.id.frame_container, fragment2,query);
                fragmentTransaction.commit();
                return true;

            }
        };
        searchView.setOnQueryTextListener(queryTextListener);

    }

According to my above code the searchView is already in expnaded when the fragment is just instantiated.

How can I collapse searchView when the fragment is just instantiated, & it should be expanded on click of search icon ?

I hope my problem is clear...


Solution

  • Use android:showAsAction="always|collapseActionView"