Activity中的片段 - 使用工具栏和操作按钮(类似于Windows窗口)

时间:2017-03-30 15:08:12

标签: android android-fragments

我希望Activity填充Fragments。每个Fragment都表现为Windows操作系统中的一个窗口 - 它的Toolbar带有标题和操作按钮:

enter image description here

片段

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Show Toolbar in Fragment
        setHasOptionsMenu(true);

        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_entries_list, container, false);
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);

        inflater.inflate(R.menu.menu_common, menu);
    }

问题:

  1. 如何更改Fragment
  2. 的标题
  3. 如何显示三点动作按钮?
  4. 修改

    我现在修改了 menu_common.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_categories"
            android:title="Categories"
            android:visible="true"
            app:showAsAction="never"/>
        <item
            android:id="@+id/action_settings"
            android:title="Settings"/>
    </menu>
    

    片段

    @Override
        public void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setHasOptionsMenu(true);
        }
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            ViewGroup view = (ViewGroup) inflater.inflate(
                    R.layout.fragment_entries_list, container, false);
    
            // Toolbar
            Toolbar toolbar = (Toolbar) view.findViewById(R.id.tb_actions);
            toolbar.setTitle("Bar");
            toolbar.showOverflowMenu();
            setHasOptionsMenu(true);
    
            // Inflate the layout for this fragment
            return view;
        }
    
        @Override
        public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
            super.onCreateOptionsMenu(menu, inflater);
            inflater.inflate(R.menu.menu_common, menu);
        }
    

    编辑2

    这就是我想要实现的目标:

    enter image description here

2 个答案:

答案 0 :(得分:1)

  
      
  1. 如何更改片段的标题?
  2.   

在您的片段中加入Toolbar并致电toolbar.setTitle(String)

  
      
  1. 如何显示三点动作按钮?
  2.   

正如您在this answer中看到的那样:

toolbar.showOverflowMenu();

答案 1 :(得分:0)

页面上似乎不可能有超过1 Toolbar(至少我没有找到方法)。

我的解决方案是为每个TextView使用自定义ImageViewPopupMenu(图标 - 按钮)以及Fragment