<android>工具栏未显示

时间:2015-07-03 23:51:47

标签: android toolbar appcompatactivity

<!-- 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下:工具栏没有出现。 2.在FrameLayout下面:出现工具栏但未显示内容。 3.在LinearLayout中有DrawerLayout,但我的片段看起来效果不好。 提前谢谢。

5 个答案:

答案 0 :(得分:1)

让我试着解释一下。

Android从上到下绘制View所以; A - B - C - 您是DrawerLayout中的3个相应观点。现在A是Toolbar首先绘制了width符合整体宽度,height适合内容本身,B绘制为width适合 - the-overallwidth和height适合整体高度等等,这意味着你的FrameLayout在绘图连续中和你的Toolbar之上被绘制第二,但是因为它覆盖了你没有看到它就在那里,如果你把它带到下面,你的工具栏会连续第二次被绘制,因此你可以看到它。

我希望你现在可以从中扣除一个解决方案。

答案 1 :(得分: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>

答案 2 :(得分: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>

不要忘记初始化工具栏并将其设置为ActionBar:

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

minSdkVersion为14

答案 3 :(得分: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>

答案 4 :(得分:0)

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

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

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