影响工具栏样式和定位的导航抽屉片段

Navigation Drawer Fragment Affecting Toolbar's Style and Positioning

我正在拼命寻求帮助解决我遇到的问题。所以我一直在关注 this 教程系列,这绝对很棒,但是与像他在视频中那样使用 Bottom Navigation 相比,我使用的是带有片段的“导航抽屉”。

当我在 NavigationDrawer 中 select HomeFragment 时,布局加载但所有内容都被推到 Toolbar 下方。现在,工具栏功能齐全,因为汉堡包和更多选项菜单图标确实存在,但由于白色也是不可见的,因此更多是设计问题。

此外,关于 Toolbar's 样式,是的,我故意将其设为透明,以便完成的 UI 看起来像下面的 "Expected Output" 图片。

预期输出 - 这是 HomeActivity 中与 HomeFragment.

中相同布局的样子

下面是我的 HomeActivity 代码,它嵌套了 FragmentsFrameLayout

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.michaeldybek.plasticoceansapp.HomeActivity">

    <FrameLayout
        android:id="@+id/mainContainer"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="@id/toolbar"
        app:layout_constraintTop_toBottomOf="@id/toolbar">
    </FrameLayout>

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@null"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

我已经像往常一样在HomeActivity class中声明并启动了Toolbar,当显示HomeActivity时,Toolbar确实存在,这让我怀疑我是否必须在 HomeFragment class 内再次声明?如果是这样,你会怎么做?

如果其他布局或 classes 需要任何其他代码,请提出要求。任何帮助将不胜感激!

删除 android:background="@null" 或设置 android:background="@color/colorPrimary 在工具栏

所以经过一周的扎实研究,我终于想出了一个绕过这个问题的解决方案!

我最终从 HomeActivity 中删除了 ToolbarFrameLayout,而是创建了一个新的布局资源文件并将其命名为“app_bar.xml”,其中包含以下代码:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.CoordinatorLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".core.MainActivity">

        <FrameLayout
            android:id="@+id/mainContainer"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

    </android.support.design.widget.CoordinatorLayout>

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/transparent"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:elevation="0dp"
        android:stateListAnimator="@null">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:theme="@style/ThemeOverlay.AppCompat.Light"/>

    </android.support.design.widget.AppBarLayout>

</RelativeLayout>

然后我使用 include 标签将 app_bar 包含在 HomeActivity 布局中(HomeActivity 还包含嵌套在 DrawerLayout).

我希望这对遇到这个问题的人有所帮助。如果您还有任何疑问,请尽管提问!