工具栏上的 Android 导航抽屉

Posted

技术标签:

【中文标题】工具栏上的 Android 导航抽屉【英文标题】:Android nav drawer over toolbar 【发布时间】:2015-02-26 15:49:53 【问题描述】:

我正在创建一个带有透明Toolbar 的应用程序,并且我希望Navigation Drawer 出现在它之上。现在我的主要布局是:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    tools:context=".MainActivity">

    <android.support.v4.widget.DrawerLayout
        android:id="@+id/drawer_layout"
        android:layout_
        android:layout_>

        <!-- Main layout -->
        <FrameLayout
            android:id="@+id/main_fragment_container"
            android:layout_
            android:layout_ />

        <!-- Toolbar -->
        <android.support.v7.widget.Toolbar
            xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:id="@+id/toolbar"
            app:theme="@style/ToolbarTheme"
            android:layout_
            android:layout_
            android:background="@android:color/transparent"/>

        <!-- Nav drawer -->
        <fragment
            android:id="@+id/fragment_drawer"
            android:name="rsay.android.scrollbanner.NavigationDrawerFragment"
            android:layout_
            android:layout_
            android:layout_gravity="left|start"
            tools:layout="@layout/fragment_navigation_drawer"/>

    </android.support.v4.widget.DrawerLayout>

<!--<android.support.v7.widget.Toolbar-->
    <!--xmlns:android="http://schemas.android.com/apk/res/android"-->
    <!--xmlns:app="http://schemas.android.com/apk/res-auto"-->
    <!--android:id="@+id/toolbar"-->
    <!--app:theme="@style/ToolbarTheme"-->
    <!--android:layout_-->
    <!--android:layout_-->
    <!--android:background="@android:color/transparent"/>-->

</FrameLayout>

现在这为我的导航抽屉提供了我需要的正确动画,但是我的内容(在另一个布局中)不会滚动。如果我在Navigation Drawer 中注释掉我当前的Toolbar 并取消注释底部的那个,我的内容会滚动,并且导航抽屉的高度是正确的,除了工具栏在导航抽屉的顶部,所以抽屉图标在抽屉本身中可见。我尝试将工具栏全部移除并将其放置在我的内容布局中,但我收到了一个空引用错误。我还尝试将Toolbar 放在main_fragment_container 内,这将Toolbar 放在我的内容后面,因此它不可见。对此的任何帮助将不胜感激!

【问题讨论】:

看看这个link...希望对你有帮助 【参考方案1】:

你应该:

去掉根FrameLayout

如你所说,将Toolbar 放在main_fragment_container 中。但是必须将其转换为 LinearLayout(例如),以便在顶部垂直显示您的工具栏,然后是您的内容(您可以嵌套到新的 FrameLayout 中)。

您看到的是内容后面的工具栏,因为 FrameLayout 孩子重叠。

<android.support.v4.widget.DrawerLayout>

    <LinearLayout>
        android:orientation="vertical"

        <android.support.v7.widget.Toolbar /> <!-- toolbar code here -->
        <RelativeLayout /> <!-- main layout here -->

    </LinearLayout>

    <fragment>  <!-- drawer stuff -->
        android:layout_gravity="start"
    </fragment>

</android.support.v4.widget.DrawerLayout>

【讨论】:

我这样做了,现在我的内容没有显示,它只是一个空白背景。但是工具栏和导航抽屉工作正常 @Ryan 这可能是一个 android:layout_height 问题。我编辑了一些代码以确保我清楚。 好的,我做到了,现在一切正常,除了内容位于工具栏下方。它仍然是透明的,但只有默认背景后跟内容 @Ryan 工具栏与内容分离或重叠。如果您希望它们重叠,请使用 FrameLayout。在 FrameLayouts XML 订单计数中;最后一个项目将出现在顶部,因此您可能希望先放置 ,然后再放置 <..toolbar>.

以上是关于工具栏上的 Android 导航抽屉的主要内容,如果未能解决你的问题,请参考以下文章

工具栏下方的导航抽屉

Android如何使用工具栏中的按钮切换以使用片段打开/关闭导航抽屉

单击工具栏上的汉堡包图标不会打开导航抽屉

带有片段的 Android Studio 导航抽屉。工具栏隐藏在下一个片段活动或页面中

导航抽屉没有覆盖我的工具栏[重复]

如何在 Android 中更改汉堡图标(导航抽屉)