在片段视图中附加额外的工具栏

Appending extra toolbar in fragment view

在我的仪表板上的应用程序中,有一个类似于下图的应用程序栏。

如图所示,我有一个当前显示导航抽屉的工具栏。

从导航抽屉中,我可以导航到片段 A,它替换了工具栏下方的 TAB 区域,如下图所示。

有什么方法可以添加两个像这样的工具栏,以便在一个片段中同时显示导航抽屉图标和后退按钮?

只是为了更新,暂时实现上面我所做的就是。

我在我的片段文件中添加了一个布局,我在其中绘制了一个自定义后退按钮,如下所示:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorPrimaryDark20"
    android:orientation="horizontal"
    android:padding="15dp"
    android:weightSum="3">
    <ImageView
        android:id="@+id/backButton"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_gravity="left"
        android:layout_weight="0.2"
        android:src="@drawable/delete_icon" />
</LinearLayout>

当有人点击 backImage 时,我调用 popBackStack

   imageView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            getFragmentManager().popBackStack();
        }
    });

上面的代码给了我想要的功能。

请注意,要使上述工作正常,您需要确保将您的 fragmentTransaction 添加到 backstack 中,如下所示

final FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.home_content_layout,NAME_OFYOUR_FRAGMENT,"nameOfYourFragment");
transaction.addToBackStack(null);
transaction.commit();

没有 最好的 方法来实现您想要的,考虑到它违背了 Android Design Guidelines。虽然没有明确说明,但导航抽屉图标和后退按钮图标绝不会一起显示。

此设计背后的理论是导航应该直观且可预测,将两个导航图标并排显示有损于直观的用户界面。如果有东西要返回,应该显示返回按钮。不过,可以通过两种不同的方式解决对持久导航的需求。以Google的Gmail应用为例。

默认情况下,NavigationView 支持使用从屏幕左边缘滑动作为打开导航抽屉的手势。在 Gmail 应用程序中,当您在任何一个收件箱中时,都会显示导航抽屉图标。一旦选择了一条消息,导航抽屉图标就会替换为 back 按钮。不过,您会注意到您仍然可以使用前面所述的手势访问抽屉。

在较大的屏幕上,Gmail 应用程序支持微型导航抽屉。该抽屉可以保留在视图中,而无需显示导航图标。虽然使用当前的支持库实现起来有点困难,但如果您愿意, 可能会有所帮助。

最后,回答你的问题,没有内置的方法可以同时显示后退按钮和导航抽屉图标。如果您需要这样做,唯一的方法就是像现在一样使用 "work-around"。

不过,我可能要做的唯一改变是使用 ImageButton 而不是 ImageView。然后您可以使用 style="?android:attr/actionButtonStyle" 设置按钮的样式以模仿 ActionBar 按钮的外观。