[英]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.