Navigation drawer is below toolbar in Android -


hello everyone,

i newcomer android programming , working on practice app more or less patchwork of tutorial codes.

right have navigation drawer below toolbar. readjust xml hierarchy stays consistent material design guideline , have navigation drawer above toolbar. seems simple enough task, life of me can't seem it.

can offer suggestions?

<?xml version="1.0" encoding="utf-8"?>  <linearlayout xmlns:android="http://schemas.android.com/apk/res/android"      xmlns:apps="http://schemas.android.com/apk/res-auto"      android:layout_width="match_parent"      android:layout_height="match_parent"      android:orientation="vertical"      android:background="@color/background_color">        <android.support.v7.widget.toolbar          xmlns:android="http://schemas.android.com/apk/res/android"          android:id="@+id/toolbar"          android:layout_width="match_parent"          android:layout_height="wrap_content"          android:background="@color/primary_color"          android:theme="@style/themeoverlay.appcompat.dark.actionbar"          apps:title="@string/app_name"/>        <android.support.v4.widget.drawerlayout          xmlns:android="http://schemas.android.com/apk/res/android"          xmlns:apps="http://schemas.android.com/apk/res-auto"          android:id="@+id/drawer_layout"          android:layout_width="match_parent"          android:layout_height="match_parent">            <framelayout              android:id="@+id/frame_layout"              android:layout_width="match_parent"              android:layout_height="match_parent"              android:orientation="vertical">          </framelayout>            <android.support.design.widget.navigationview              xmlns:android="http://schemas.android.com/apk/res/android"              xmlns:apps="http://schemas.android.com/apk/res-auto"              android:id="@+id/navigation_view"              android:layout_width="wrap_content"              android:layout_height="match_parent"              android:layout_gravity="start"              apps:itemtextcolor="#000"              android:fitssystemwindows="true"              apps:headerlayout="@layout/navigation_header"              apps:menu="@menu/drawer_menu"/>        </android.support.v4.widget.drawerlayout>    </linearlayout>

package android.dohyun.projectannie;    import android.os.bundle;  import android.support.design.widget.navigationview;  import android.support.v4.app.fragmentmanager;  import android.support.v4.app.fragmenttransaction;  import android.support.v4.widget.drawerlayout;  import android.support.v7.app.actionbardrawertoggle;  import android.support.v7.app.appcompatactivity;  import android.support.v7.widget.toolbar;  import android.view.menuitem;    public class mainactivity extends appcompatactivity {        drawerlayout mdrawerlayout;      navigationview mnavigationview;      fragmentmanager mfragmentmanager;      fragmenttransaction mfragmenttransaction;        @override      protected void oncreate(bundle savedinstancestate) {          super.oncreate(savedinstancestate);          setcontentview(r.layout.activity_main);            mdrawerlayout = (drawerlayout) findviewbyid(r.id.drawer_layout);          mnavigationview = (navigationview) findviewbyid(r.id.navigation_view);                mfragmentmanager = getsupportfragmentmanager();          mfragmenttransaction = mfragmentmanager.begintransaction();          mfragmenttransaction.replace(r.id.frame_layout, new notesfragment()).commit();            mnavigationview.setnavigationitemselectedlistener(new navigationview.onnavigationitemselectedlistener() {              @override              public boolean onnavigationitemselected(menuitem menuitem) {                  mdrawerlayout.closedrawers();                    if(menuitem.getitemid() == r.id.menu_notes) {                      fragmenttransaction fragmenttransactionnotes = mfragmentmanager.begintransaction();                      fragmenttransactionnotes.replace(r.id.frame_layout, new notesfragment()).commit();                  }                  if(menuitem.getitemid() == r.id.menu_folders) {                      fragmenttransaction fragmenttransactionfolders = mfragmentmanager.begintransaction();                      fragmenttransactionfolders.replace(r.id.frame_layout, new foldersfragment()).commit();                  }                  if(menuitem.getitemid() == r.id.menu_trash) {                      fragmenttransaction fragmenttransactiontrash = mfragmentmanager.begintransaction();                      fragmenttransactiontrash.replace(r.id.frame_layout, new trashfragment()).commit();                  }                  if(menuitem.getitemid() == r.id.menu_settings) {                      fragmenttransaction fragmenttransactionsettings = mfragmentmanager.begintransaction();                      fragmenttransactionsettings.replace(r.id.frame_layout, new settingsfragment()).commit();                  }                  if(menuitem.getitemid() == r.id.menu_info) {                      fragmenttransaction fragmenttransactioninfo = mfragmentmanager.begintransaction();                      fragmenttransactioninfo.replace(r.id.frame_layout, new infofragment()).commit();                  }                    return false;              }          });            toolbar toolbar = (toolbar) findviewbyid(r.id.toolbar);          actionbardrawertoggle mdrawertoggle = new actionbardrawertoggle(this, mdrawerlayout, toolbar, r.string.app_name, r.string.app_name);            mdrawerlayout.setdrawerlistener(mdrawertoggle);          mdrawertoggle.syncstate();        }  }

the above code modified version of 1 found here, written ratan: https://androidbelieve.com/navigation-drawer-with-swipe-tabs-using-design-support-library/

drawerlayout special framelayout supports navigation drawer.

the child view doesn't have layout_gravity main view. child view has layout_gravity e.g. android:layout_gravity="start" nav drawer.

this means drawerlayout should top level view group. in other words, put layout toolbar inside drawerlayout.


Comments