【问题标题】:Toolbar - No drawer view found with gravity LEFT工具栏 - 没有找到重力左侧的抽屉视图
【发布时间】:2017-11-23 14:37:16
【问题描述】:

在一项包含 3 个选项卡的活动中,我的工具栏出现问题。它适用于我的应用程序的所有其他页面,但由于某种原因,当我尝试单击此页面上的菜单时崩溃。

这是错误:

java.lang.IllegalArgumentException: No drawer view found with gravity LEFT
                                                                                at android.support.v4.widget.DrawerLayout.openDrawer(DrawerLayout.java:1618)
                                                                                at android.support.v7.app.ActionBarDrawerToggle.toggle(ActionBarDrawerToggle.java:290)
                                                                                at android.support.v7.app.ActionBarDrawerToggle.access$100(ActionBarDrawerToggle.java:64)
                                                                                at android.support.v7.app.ActionBarDrawerToggle$1.onClick(ActionBarDrawerToggle.java:200)
                                                                                at android.view.View.performClick(View.java:5697)
                                                                                at android.view.View$PerformClick.run(View.java:22526)
                                                                                at android.os.Handler.handleCallback(Handler.java:739)
                                                                                at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                at android.os.Looper.loop(Looper.java:158)
                                                                                at android.app.ActivityThread.main(ActivityThread.java:7229)
                                                                                at java.lang.reflect.Method.invoke(Native Method)
                                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

这是布局的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:id="@+id/main_content"
                                             android:layout_width="match_parent"
                                             android:layout_height="match_parent"
                                             android:fitsSystemWindows="true"
                                             >


<android.support.v4.widget.DrawerLayout
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingTop="0dp">

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


    <android.support.design.widget.TabLayout
        android:id="@+id/tab_layout"
        android:layout_width="match_parent"
        android:layout_height="48dp"/>

    <android.support.v4.view.ViewPager
        android:id="@+id/view_pager"
        android:layout_below="@id/tab_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>



        <fragment
            android:name="com.bestworkouts.sheikoworkout.NavigationDrawerFragment"
            android:id="@+id/fragment_navigation_drawer"
            tools:layout="@layout/fragment_navigation_drawer"
            android:layout_width="280dp"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            app:layout="@layout/fragment_navigation_drawer" />




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

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

谢谢,希望有人能帮帮我!

【问题讨论】:

    标签: android navigation-drawer android-toolbar


    【解决方案1】:

    您不能将 DrawerFragment 放在 DrawerLayout 的子视图中 您必须提供抽屉布局或抽屉片段作为抽屉布局的子视图。解决您的问题只需将 Fragment 放在 AppbarLayout 之外。 就这样:

            <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:id="@+id/main_content"
                                                     android:layout_width="match_parent"
                                                     android:layout_height="match_parent"
                                                     android:fitsSystemWindows="true"
                                                     >
    
    
        <android.support.v4.widget.DrawerLayout
            android:id="@+id/drawer_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
    
        <android.support.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingTop="0dp">
    
            <include android:id="@+id/app_bar"
                     layout="@layout/toolbar" />
    
    
            <android.support.design.widget.TabLayout
                android:id="@+id/tab_layout"
                android:layout_width="match_parent"
                android:layout_height="48dp"/>
    
            <android.support.v4.view.ViewPager
                android:id="@+id/view_pager"
                android:layout_below="@id/tab_layout"
                android:layout_width="match_parent"
                android:layout_height="match_parent"/>
    
    
    
    
    
    
    
        </android.support.design.widget.AppBarLayout>
    
                <fragment
                    android:name="com.bestworkouts.sheikoworkout.NavigationDrawerFragment"
                    android:id="@+id/fragment_navigation_drawer"
                    tools:layout="@layout/fragment_navigation_drawer"
                    android:layout_width="280dp"
                    android:layout_height="match_parent"
                    android:layout_gravity="start"
                    app:layout="@layout/fragment_navigation_drawer" />
    
    
        </android.support.v4.widget.DrawerLayout>
    </android.support.design.widget.CoordinatorLayout>
    

    【讨论】:

      【解决方案2】:

      您在末尾缺少 CoordinatorLayout 的关闭标记:&lt;/android.support.design.widget.CoordinatorLayout&gt;

      但是,请注意 DrawerLayout 应该是顶级布局。

      来自文档:

      要使用 DrawerLayout,请将您的主要内容视图定位为第一个 宽度和高度为 match_parent 的孩子。将抽屉添加为子项 主要内容视图之后的视图并设置 layout_gravity 适当地。抽屉通常使用 match_parent 作为高度 固定宽度。

      所以我认为你不应该将它 (DrawerLayout) 放在 CoordinatorLayout 中。

      Android DrawerLayout - No drawer view found with gravity

      【讨论】:

        【解决方案3】:

        java.lang.IllegalArgumentException: 没有找到带有重力 LEFT 的抽屉视图 我想让抽屉从右边缘打开。 子布局宽度/高度对我来说不起作用,我有一行导致整个非法参数异常,删除了该行
        tools:openDrawer="Right" 并且参数异常消失了

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-09-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-08-03
          相关资源
          最近更新 更多