【问题标题】:Fragments inside Activity - with Toolbar and Action buttons (similar to Windows windows)Activity 中的 Fragments - 带有工具栏和操作按钮(类似于 Windows 窗口)
【发布时间】:2017-03-31 03:04:16
【问题描述】:

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

片段

    @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. 如何显示三点动作按钮?

编辑:

我现在修改了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

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

【问题讨论】:

    标签: android android-fragments


    【解决方案1】:
    1. 如何更改 Fragment 的标题?

    在您的片段中包含Toolbar 并调用toolbar.setTitle(String)

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

    正如您在this answer 中看到的:

    toolbar.showOverflowMenu();
    

    【讨论】:

    • 已修改问题 - 标题已设置,操作按钮仍未显示。想知道是否应该添加类似于setActionBar(toolbar) 的东西?
    • 顺便说一句,使用android.support.v7.widget.Toolbar
    • @h3d0,你有什么问题?活动中只能有一个操作栏。如果这就是您所需要的 - 那么您可以执行 setSupportActionBar(toolbar)
    • 我希望有带有 ActionBar 的 Activity,填充有 Fragments(如 ListView)。每个 Fragment 都有自己的 ActionBar。
    • 一个活动中只能有一个操作栏。但是你可以在每个Fragment 中拥有任意数量的Toolbars。 Toolbar 只是一个 View
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多