1
<!-- A DrawerLayout is intended to be used as the top-level content view using match_parent for both width and height to consume the full space available. -->
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".main_drawer">

    <android.support.v7.widget.Toolbar
         xmlns:android="http://schemas.android.com/apk/res/android"
         android:id="@+id/toolbar"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:fitsSystemWindows="true"
         android:background="@color/octo"/>

    <!-- As the main content view, the view below consumes the entire
         space available using match_parent in both dimensions. -->
    <FrameLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

    </FrameLayout>

    <!-- android:layout_gravity="start" tells DrawerLayout to treat
         this as a sliding drawer on the left side for left-to-right
         languages and on the right side for right-to-left languages.
         If you're not building against API 17 or higher, use
         android:layout_gravity="left" instead. -->
    <!-- The drawer is given a fixed width in dp and extends the full height of
         the container. -->
    <fragment android:id="@+id/navigation_drawer"
        android:layout_width="@dimen/navigation_drawer_width"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:name="am.octogr.app.octocopy.NavigationDrawerFragment"

        tools:layout="@layout/main_drawer_listview" />


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

嗨,我怎样才能在这个布局中放置一个工具栏?导航抽屉的此布局。我已经尝试了一些代码,但仍然无法正常工作。1、FrameLayout下:Toolbar没有出现。2. FrameLayout下方:出现工具栏但没有显示内容。3. 在 LinearLayout 中有 DrawerLayout 但我的片段似乎效果不佳。先感谢您。

4

5 回答 5

1

让我试着解释一下。

AndroidView这样从上到下绘制s;A - B - C - 你的DrawerLayout. 现在 AToolbar是首先使用参数widthfit-to-the-overallwidth 并height适合内容本身绘制,B 是使用widthfit-to-the-overallwidth 和heightfit-to-the-overallheight 等绘制的,等等。这意味着你的 FrameLayout 是在连续绘图中第二次绘制并在您的顶部,Toolbar但由于它被覆盖,您看不到它在那里,如果您将它带到下方,您的工具栏将连续第二次绘制,因此您会看到它。

我希望你现在可以从中推断出一个解决方案。

于 2015-07-04T01:13:56.807 回答
0

将工具栏放在另一个布局中,这将是您的主要内容视图

 <!-- The main content view -->
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            >
    <android.support.v7.widget.Toolbar
             xmlns:android="http://schemas.android.com/apk/res/android"
             android:id="@+id/toolbar"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:fitsSystemWindows="true"
             android:background="@color/octo"/>

        <!-- As the main content view, the view below consumes the entire
             space available using match_parent in both dimensions. -->
        <FrameLayout
            android:id="@+id/container"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >

        </FrameLayout>
        </LinearLayout>
于 2015-07-04T00:57:46.693 回答
0

尝试这个 :

<android.support.v4.widget.DrawerLayout 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:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context=".main_drawer">

    <LinearLayout
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:orientation="vertical"
    >

    <include
        android:id="@+id/toolbar"
        layout="@layout/tool_bar"
    />

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

    </FrameLayout>

    <fragment android:id="@+id/navigation_drawer"
        android:layout_width="@dimen/navigation_drawer_width"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:name="am.octogr.app.octocopy.NavigationDrawerFragment"

        tools:layout="@layout/main_drawer_listview" />

        <!-- Your Content -->

</LinearLayout>

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

使用单独的tool_bar.xml

<?xml version="1.0" encoding="utf-8"?>
<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"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:background="@color/octo"
        android:elevation="6dp"
        android:minHeight="?attr/actionBarSize">
</android.support.v7.widget.Toolbar>

不要忘记初始化您的工具栏并将其设置为操作栏:

    toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

minSdkVersion 为14

于 2015-07-04T01:26:00.717 回答
0

您可以在appbar上找到有关它的最新文档。他们错过了包含一些代码以使其工作,这里是:

public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu, menu);
    return true;
} 

其中 R.menu.menu 是项目 res/menu/ 目录中的 xml 文件。将上面的代码粘贴到实现工具栏的活动上。

于 2018-07-11T02:42:47.683 回答
0

尝试这个。这对我来说可以。

将此 XML 用于您的抽屉活动。

<android.support.v4.widget.DrawerLayout 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:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <include layout="@layout/app_bar_layout" />

    <!-- The navigation drawer -->
    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_drawer"
        app:menu="@menu/activity_drawer" />

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

app_bar_layout.xml

<android.support.design.widget.CoordinatorLayout 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"
    android:fitsSystemWindows="true"
    tools:context="com.rsa.myapplication.DrawerActivity">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay"
        app:elevation="0dp">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />

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

    <FrameLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"/> <!--This line is important-->

</android.support.design.widget.CoordinatorLayout>
于 2016-04-19T10:08:24.533 回答