如何在选项卡布局中的一个片段上动态添加操作栏上的搜索视图



如果您有,请为我提供更好的解决方案 我正在开发Android应用程序,其中使用TabLaout和ViewPager在家庭活动上,我在下面添加了5个选项卡

  1. 社会的
  2. 通知
  3. 搜索
  4. 链接

我已经在值/样式中为 MainActivity 设置了设置,但我在搜索.xml中放置了自定义操作栏标签。我知道如何在活动的操作栏上添加 SearchView,但我在使用片段时遇到问题。我的目标只是当用户在"搜索"选项卡上显示搜索视图小部件时在操作栏上显示。在其他选项卡上,我不想显示。此外,我还添加了更多内容 <meta-data android:name="android.app.searchable" android:resource="@xml/searchable"/> 在标签和设置的清单文件中 设置有选项菜单(真); 在搜索片段中。但是操作栏显示在搜索屏幕上,没有搜索视图小部件,请纠正我做错的地方。

您只需要在 searchFragment 中添加 SearchView:

搜索片段类:

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_news, container, false);
...        
  setHasOptionsMenu(true);
..... 
return rootView ;}
 @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);
        inflater.inflate(R.menu.menu_search, menu);
        try {
            // Associate searchable configuration with the SearchView
            SearchManager searchManager =
                    (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);
            SearchView searchView =
                    (SearchView) menu.findItem(R.id.action_search).getActionView();
            searchView.setSearchableInfo(
                    searchManager.getSearchableInfo(getActivity().getComponentName()));
            searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
                @Override
                public boolean onQueryTextSubmit(String s) {
                   // do your search
                    return false;
                }
                @Override
                public boolean onQueryTextChange(String s) {
           // do your search on change or save the last string or... 
                    return false;
                }
            });

        }catch(Exception e){e.printStackTrace();}
    }

menu_search 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"
        android:icon="@drawable/action_search_btn"
        android:title="Search"
        app:showAsAction="collapseActionView|ifRoom"
        app:actionViewClass="android.support.v7.widget.SearchView"/>
</menu>

相关内容

  • 没有找到相关文章