this question has answer here:
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
Post a Comment