Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

DrawerLayout must be measured with MeasureSpec.EXACTLY error

I am trying to implement a Navigation drawer, but I keep getting this error. I saw the similar questions but did not work for me. I have the following layout 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> 

On my 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); } 
like image 742
Ismail Rubad Avatar asked Jul 31 '15 12:07

Ismail Rubad


2 Answers

My DrawerLayout was inside a 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> 

Then I solved the problem by changing the layout_height="wrap_content" to layout_height="match_parent" of LinearLayout.So the code is:

<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"> 
like image 91
Ismail Rubad Avatar answered Sep 21 '22 02:09

Ismail Rubad


For those who still have an exception, ensure your DrawerLayout's height is match_parent

like image 36
YTerle Avatar answered Sep 20 '22 02:09

YTerle