必须使用MeasureSpec.EXACTLY错误测量DrawerLayout

Ism*_*bad 23 android navigation-drawer

我正在尝试实现导航抽屉,但我不断收到此错误.我看到了类似的问题,但对我没有用.我有以下布局activity_main2.xml:

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

   <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>

   <RelativeLayout
        android:layout_gravity="left|start"
        android:layout_width="match_parent"
        android:background="#fff"
        android:layout_height="match_parent">

        <ListView
            android:id="@+id/left_drawer"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:divider="#eee"
            android:background="#fff"
            android:dividerHeight="1dp" />
    </RelativeLayout>
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)

在我的activity_main2.java上

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);
    initView();
    if (toolbar != null) {
        //toolbar.setTitle("");
        setSupportActionBar(toolbar);
    }
    initDrawer();
}

private void initView() {
    leftDrawerList = (ListView) findViewById(R.id.left_drawer);
    toolbar = (Toolbar) findViewById(R.id.toolbar);
    drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
    navigationDrawerAdapter = new ArrayAdapter<String>( MainActivity.this, android.R.layout.simple_list_item_1, leftSliderData);
    leftDrawerList.setAdapter(navigationDrawerAdapter);
    leftDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            if(position == 1){
                drawerLayout.closeDrawer(Gravity.LEFT);
            }
        }
    });
}

private void initDrawer() {
    drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close) {

        @Override
        public void onDrawerClosed(View drawerView) {
            super.onDrawerClosed(drawerView);
        }

        @Override
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
        }
    };
    drawerLayout.setDrawerListener(drawerToggle);
}
Run Code Online (Sandbox Code Playgroud)

希望有人能帮助我找到正确的方向.

提前谢谢了!

Ism*_*bad 37

我的DrawerLayout在LinearLayout中:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:background="@drawable/abohawawallpapersqr"
    tools:context=".MainActivity">

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

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

        <!-- ...... -->
        </android.support.v4.widget.DrawerLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

然后,我通过改变解决了这个问题layout_height="wrap_content"layout_height="match_parent"LinearLayout.所以,代码是:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@drawable/abohawawallpapersqr"
    tools:context=".MainActivity">
Run Code Online (Sandbox Code Playgroud)


YTe*_*rle 18

对于仍然有例外的人,请确保您DrawerLayout的身高match_parent


Vip*_*mar 17

这也可能因为新的而发生ConstraintLayout.确保抽屉布局不在层次结构中ConstraintLayout.

这是Android上一个非常愚蠢的错误.我会尝试为它提交一个错误.

  • @VipulKumar您应该在ConstraintLayout中将DrawerLayout的宽度和高度都设置为0dp。如果仅将高度设置为0dp,将宽度设置为match_parent,则将导致此问题。/sf/ask/3290103771/ (6认同)
  • 你是绝对正确的。相对布局在这里最适合我。 (2认同)
  • @ user175257 刚刚尝试了该解决方案,它对我有用。建议尝试将 DrawerLayout 与 ConstraintLayout 结合使用的问题 (2认同)

M. *_*han 10

确保您的活动不是"对话"活动,请检查清单.我犯了这个错误并得到了错误.

  • 你救了我的屁股。我确信这与 ConstraintLayout 有关,但它是一个很好的旧 Dialog 主题活动。谢谢! (3认同)

Dhr*_*tel 7

如果设置layout_width为,也会发生这种情况wrap_content.在我的情况下,它通过设置宽度来解决match_parent.希望这有助于某人.