I have a list fragment in BaseActivity and you want to implement a search function. but the action bar compact changes the height when you click the search element button
see below screenshot

menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context="com.android.bypeople.uber.BaseActivity" > <item android:id="@+id/action_add" android:icon="@drawable/btn_profile_selector" android:orderInCategory="100" android:title="@string/action_add" android:visible="false" app:showAsAction="always"/> <item android:id="@+id/action_search" android:icon="@android:drawable/ic_menu_search" android:title="@string/action_search" android:visible="false" app:actionViewClass="android.support.v7.widget.SearchView" app:showAsAction="ifRoom"/>
onCreateOptionsMenu in fragment
@Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu,inflater); inflater.inflate(R.menu.base, menu); menu.findItem(R.id.action_add).setVisible(true); SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE); MenuItem searchItem = menu.findItem(R.id.action_search); searchItem.setVisible(true); SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem); searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName())); searchView.setOnQueryTextListener(queryListener); queryListener = new OnQueryTextListener() { @Override public boolean onQueryTextChange(String newText) { return false; } @Override public boolean onQueryTextSubmit(String query) { Toast.makeText(getActivity(), "Searching for: " + query + "...", Toast.LENGTH_SHORT).show(); return false; } }; }
source share