没有抽屉视图发现重力左

时间:2015-04-05 15:51:28

标签: android material-design

当我运行应用程序并单击工具栏图标时,我收到错误为"没有抽屉视图发现重力LEFT"

这是我的xml文件

main.xml中

<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"
    android:fitsSystemWindows="true" >

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

        <android.support.v7.widget.Toolbar
            android:id="@+id/my_awesome_toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="?attr/colorPrimary"
            android:minHeight="?attr/actionBarSize" />

        <android.support.v7.widget.RecyclerView
            android:id="@+id/book_list_rv_list"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scrollbars="vertical" />

        <ListView
            android:id="@+id/ListView1"
            android:layout_width="241dp"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:background="#333"
            android:choiceMode="singleChoice"
            android:divider="#666"
            android:dividerHeight="1dp"
            android:paddingLeft="15sp"
            android:paddingRight="15sp" />
    </LinearLayout>

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

这个id是活动java文件的代码片段 活动文件

Toolbar mToolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);

        // drawer
        setSupportActionBar(mToolbar);
        mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
                mToolbar, R.string.app_name, R.string.app_name);
        mDrawerLayout.setDrawerListener(mDrawerToggle);

4 个答案:

答案 0 :(得分:7)

首先设置drawerlayout然后设置支持操作栏。 检查以下代码。

Toolbar mToolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
 mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
 mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
                mToolbar, R.string.app_name, R.string.app_name);
 mDrawerLayout.setDrawerListener(mDrawerToggle);
 setSupportActionBar(mToolbar);//modified(changed line)

答案 1 :(得分:6)

内容和抽屉必须是DrawerLayout的两个孩子。所以改变你的布局:

<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"
    android:fitsSystemWindows="true" >

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

        <android.support.v7.widget.Toolbar
            android:id="@+id/my_awesome_toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="?attr/colorPrimary"
            android:minHeight="?attr/actionBarSize" />

        <android.support.v7.widget.RecyclerView
            android:id="@+id/book_list_rv_list"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scrollbars="vertical" />

    </LinearLayout>

    <ListView
        android:id="@+id/ListView1"
        android:layout_width="241dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="#333"
        android:choiceMode="singleChoice"
        android:divider="#666"
        android:dividerHeight="1dp"
        android:paddingLeft="15sp"
        android:paddingRight="15sp" />

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

答案 2 :(得分:6)

它可能与您尝试关闭抽屉的方式有关

mToolBar.setNavigationOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        if (mDrawerLayout.isDrawerOpen(Gravity.Start)) {
            mDrawerLayout.closeDrawer(Gravity.Start);
        } else {
            mDrawerLayout.openDrawer(Gravity.Start);
        }
    }

以获取更多参考资料

https://developer.android.com/reference/android/support/v4/view/GravityCompat.html#START

答案 3 :(得分:0)

内容和抽屉应采用不同的布局,抽屉应留有重力。

  

DrawerLayout

     

Contnet

     

抽屉

     

/ DrawerLayout

像这样更新你的文件,

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

        <android.support.v7.widget.Toolbar
            android:id="@+id/my_awesome_toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="?attr/colorPrimary"
            android:minHeight="?attr/actionBarSize" />

        <android.support.v7.widget.RecyclerView
            android:id="@+id/book_list_rv_list"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scrollbars="vertical" />
        </LinearLayout>

        <ListView
            android:id="@+id/ListView1"
            android:layout_width="241dp"
            android:layout_height="match_parent"
            android:layout_gravity="left" //or start
            android:background="#333"
            android:choiceMode="singleChoice"
            android:divider="#666"
            android:dividerHeight="1dp"
            android:paddingLeft="15sp"
            android:paddingRight="15sp" />
    </LinearLayout>