工具栏上的 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 订单计数中;最后一个项目将出现在顶部,因此您可能希望先放置以上是关于工具栏上的 Android 导航抽屉的主要内容,如果未能解决你的问题,请参考以下文章
Android如何使用工具栏中的按钮切换以使用片段打开/关闭导航抽屉