我正在开发一个需要ActionBar标签和导航抽屉的应用。然而,似乎这两者在布局上相互冲突。对于导航抽屉,我需要有DrawerLayout
作为根布局,然后是抽屉和内容的另外两个视图。这真的很容易,而且效果很好。这样做的代码是:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout 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:id="@+id/navdrawer"
tools:context="io.github.ncca_fbla.fabric.MainActivity">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
<LinearLayout
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start">
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
我可以告诉它无需运行或任何其他工作即可工作:
问题是我需要TabLayout
,ViewPager
和自定义ToolBar
,所有这些都需要CoordinatorLayout
作为根元素才能正常工作。无论如何,我可以得到我需要正常工作的三个视图,保持DrawerLayout
为根?我尝试在没有CoordinatorLayout
作为根视图的情况下添加它们,并且工具栏无法正确显示。基本上,我试图将上面的代码与以下内容结合起来:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/coord"
tools:context="io.github.ncca_fbla.fabric.MainActivity">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Toolbar
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways" />
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabMode="fixed"
app:tabGravity="fill"/>
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.design.widget.CoordinatorLayout>
答案 0 :(得分:1)
您可以通过将协调器布局存储在名为coordinator_tabs的单独文件中并将其包含在DrawerLayout中来干净地完成。您的文件将如下所示:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout 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:id="@+id/navdrawer"
tools:context="io.github.ncca_fbla.fabric.MainActivity">
<include
layout="@layout/app_bar_main"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<LinearLayout
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start">
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
如果您使用的是Android Studio,可以通过右键单击java文件夹并选择New-&gt; Activity-&gt; Navigation Drawer Activity
来查看此示例。