<Android> 工具栏不显示

<Android> Toolbar not displaying

<!-- 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>

你好,我怎样才能在这个布局中放置一个工具栏? Navigation Drawer 的这种布局。 我已经尝试了一些代码,但仍然无法正常工作。 1. FrameLayout下:Toolbar没有出现。 2. FrameLayout 下方:工具栏出现但内容未显示。 3. 在 LinearLayout 中设置 DrawerLayout,但我的片段似乎效果不佳。 提前谢谢你。

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

 <!-- 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>

让我试着解释一下。

Android 这样从上到下画了 Views ; A-B-C- 您的 DrawerLayout 中有 3 个各自的视图吗?现在 A 作为 Toolbar 首先用参数 width fit-to-the-overallwidth 和 height 适合内容本身绘制,B 用 width fit-to- 绘制the-overallwidth 和 height fit-to-the-overallheight 等等,这意味着您的 FrameLayout 在绘图序列中排在第二位,并且在您的 Toolbar 之上,但由于它被覆盖了,您看不到它就在那里,如果你把它放在下面,你的工具栏会连续第二个被绘制,因此你会看到它。

希望你现在能推导出一个解

试试这个:

<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

试试这个。它对我来说很好用。

将这个 XML 用于抽屉 activity。

<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>

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

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

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