【发布时间】:2018-12-14 08:40:07
【问题描述】:
我对在fragment 中使用SearchView 感到很生气,无论我是否触摸了搜索栏并且我进行搜索,后退按钮总是显示,但我有一个问题,后退按钮除了清除之外什么都不做搜索中的文本我想用它在fragments 之间切换。我在堆栈溢出问题中尝试了许多解决方案,但似乎没有解决我的问题。
在fragment中添加toolbar后的代码:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.search_menu_fragment, menu);
MenuItem searchItem = menu.findItem(R.id.action_search_locations);
SearchView searchView = new SearchView(((AppCompatActivity)getActivity()).getSupportActionBar().getThemedContext());
MenuItemCompat.setShowAsAction(searchItem, searchItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW ); //searchItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW |
MenuItemCompat.setActionView(searchItem, searchView);
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
// filter recycler view when query submitted
locationStatesPreviewAdapter.getFilter().filter(query);
return false;
}
@Override
public boolean onQueryTextChange(String query) {
// filter recycler view when text is changed
Log.e("QueryChange",query);
locationStatesPreviewAdapter.getFilter().filter(query);
return false;
}
});
}
xml 文件在菜单中只有搜索项:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/action_search_locations"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:title="@string/app_name"
android:icon="@android:drawable/ic_menu_search"
app:showAsAction="always|collapseActionView"
app:actionViewClass="android.support.v7.widget.SearchView" />
</menu>
谢谢。
【问题讨论】:
-
那么,你想用后退按钮做什么
-
覆盖在片段之间切换,而不是单击并什么都不做,只清除已经清除的搜索
-
此示例使用 SearchView 过滤回收站视图,但在活动中,我尝试过也有同样的问题。链接:androidhive.info/2017/11/…
-
这就是
SearchView用作选项菜单操作View的方式。如果您想在SearchView展开时保留实际的后退按钮,请不要将其设置为选项菜单项。相反,请将<SearchView>直接放在布局中的<Toolbar>内。 -
我仍然不确定您实际描述的是什么。 “后退按钮”和
SearchView的关闭箭头看起来完全一样。我仍然认为您可能只是没有正确处理后退按钮,并且SearchView与该问题并没有真正的关系。如果您暂时删除SearchView,会发生什么情况?那你的后退按钮有用吗?
标签: android android-layout android-fragments searchview