影响工具栏样式和定位的导航抽屉片段
Navigation Drawer Fragment Affecting Toolbar's Style and Positioning
我正在拼命寻求帮助解决我遇到的问题。所以我一直在关注 this 教程系列,这绝对很棒,但是与像他在视频中那样使用 Bottom Navigation
相比,我使用的是带有片段的“导航抽屉”。
当我在 NavigationDrawer
中 select HomeFragment
时,布局加载但所有内容都被推到 Toolbar
下方。现在,工具栏功能齐全,因为汉堡包和更多选项菜单图标确实存在,但由于白色也是不可见的,因此更多是设计问题。
此外,关于 Toolbar's
样式,是的,我故意将其设为透明,以便完成的 UI 看起来像下面的 "Expected Output" 图片。
预期输出 - 这是 HomeActivity
中与 HomeFragment
.
中相同布局的样子
下面是我的 HomeActivity
代码,它嵌套了 Fragments
的 FrameLayout
。
<?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
中删除了 Toolbar
和 FrameLayout
,而是创建了一个新的布局资源文件并将其命名为“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
).
我希望这对遇到这个问题的人有所帮助。如果您还有任何疑问,请尽管提问!
我正在拼命寻求帮助解决我遇到的问题。所以我一直在关注 this 教程系列,这绝对很棒,但是与像他在视频中那样使用 Bottom Navigation
相比,我使用的是带有片段的“导航抽屉”。
当我在 NavigationDrawer
中 select HomeFragment
时,布局加载但所有内容都被推到 Toolbar
下方。现在,工具栏功能齐全,因为汉堡包和更多选项菜单图标确实存在,但由于白色也是不可见的,因此更多是设计问题。
此外,关于 Toolbar's
样式,是的,我故意将其设为透明,以便完成的 UI 看起来像下面的 "Expected Output" 图片。
预期输出 - 这是 HomeActivity
中与 HomeFragment
.
下面是我的 HomeActivity
代码,它嵌套了 Fragments
的 FrameLayout
。
<?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
中删除了 Toolbar
和 FrameLayout
,而是创建了一个新的布局资源文件并将其命名为“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
).
我希望这对遇到这个问题的人有所帮助。如果您还有任何疑问,请尽管提问!