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); }
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">
For those who still have an exception, ensure your DrawerLayout
's height is match_parent
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With