13

Is it possible to configurate two Navigation Drawers on the same activity, one from the left and the other from the right?

EluciusFTW
  • 2,565
  • 6
  • 42
  • 59
Ruben Flores
  • 331
  • 1
  • 3
  • 13

4 Answers4

14

You can use drawer layout

 <android.support.v4.widget.DrawerLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/drawer_layout"
   android:layout_width="match_parent"
   android:layout_height="match_parent">
   <!-- The main content view -->

   <FrameLayout
      android:id="@+id/content_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<!-- The navigation drawer -->
    <ListView android:id="@+id/left_drawer"
       android:layout_width="240dp"
       android:layout_height="match_parent"
       android:layout_gravity="start"
       android:choiceMode="singleChoice"
       android:divider="@android:color/transparent"
       android:dividerHeight="0dp"
       android:background="#111"/>


   <ListView android:id="@+id/right_drawer"
       android:layout_width="240dp"
       android:layout_height="match_parent"
       android:layout_gravity="end"
       android:choiceMode="singleChoice"
       android:divider="@android:color/transparent"
       android:dividerHeight="0dp"
       android:background="#111"/>
 </android.support.v4.widget.DrawerLayout>

ALso check the documantation https://developer.android.com/training/implementing-navigation/nav-drawer.html

Make sure you are using toolbar not action bar

Yousef Zakher
  • 1,634
  • 15
  • 18
3

Yes you can add two ListView inside your drawer layout, one listview should have gravity start and other have end.

Haris Qurashi
  • 2,104
  • 1
  • 13
  • 28
3

yes

Can use two navigationdrawer

<android.support.v4.widget.DrawerLayout
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"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
tools:context="PackageName.ActivityName">

<ScrollView
    android:id="@+id/scrol_lay"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <!-- your layout -->

</ScrollView>
<!-- First navigation drawer -->
<android.support.design.widget.NavigationView
    android:id="@+id/navigation_view_main"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    app:menu="@menu/navigation_main_menu"
    app:headerLayout="@layout/navigation_header"/>


<!-- Second navigation drawer -->
<android.support.design.widget.NavigationView
    android:id="@+id/navigation_view_second"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="end"
    app:menu="@menu/navigation_menu"
    app:headerLayout="@layout/navigation_header"/>
</android.support.v4.widget.DrawerLayout>
Salmaan
  • 39
  • 1
  • 5
2

For maximum customization, In your xml, you can use a FrameLayout as a container

   <android.support.design.widget.NavigationView
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:fitsSystemWindows="true">

    <FrameLayout
        android:id="@+id/contDrawer"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</android.support.design.widget.NavigationView>

Now in your Activity, you can replace it with any fragment

getSupportFragmentManager().beginTransaction().replace(R.id.contDrawer, SideBarCustomerFragment.newInstance()).commit();

Now for two users, you can create 2 different fragments, You can check my boilerplate code for reference

https://github.com/hamzaahmedkhan/AndroidStructure/blob/master/app/src/main/java/com/android/structure/activities/HomeActivity.java

https://github.com/hamzaahmedkhan/AndroidStructure/blob/master/app/src/main/java/com/android/structure/activities/BaseActivity.java

Hamza Khan
  • 1,433
  • 13
  • 19