How to create a simple divider in the new NavigationView?
All you need to do is define a group
with an unique ID, I have checked the implementation if group has different id's it will create a divider.
Example menu, creating the separator:
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity"> <group android:id="@+id/grp1" android:checkableBehavior="single" > <item android:id="@+id/navigation_item_1" android:checked="true" android:icon="@drawable/ic_home" android:title="@string/navigation_item_1" /> </group> <group android:id="@+id/grp2" android:checkableBehavior="single" > <item android:id="@+id/navigation_item_2" android:icon="@drawable/ic_home" android:title="@string/navigation_item_2" /> </group></menu>
create a drawable drawer_item_bg.xml like this,
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle" > <solid android:color="#F4F4F4" /> </shape> </item> <item android:top="-2dp" android:right="-2dp" android:left="-2dp"> <shape> <solid android:color="@android:color/transparent" /> <stroke android:width="1dp" android:color="#EAEAEA" /> </shape> <!-- android:dashGap="10px" android:dashWidth="10px" --> </item></layer-list>
and add it to NavigationView as app:itemBackground="@drawable/drawer_item_bg"
<android.support.design.widget.NavigationView android:id="@+id/nav_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:background="#F4F4F4" android:layout_gravity="start" android:fitsSystemWindows="false" app:menu="@menu/activity_main_drawer" app:itemBackground="@drawable/drawer_item_bg"/>
You can add dividers easily by setting Menu Item Background via XML using app:itemBackground
<android.support.design.widget.NavigationView android:id="@id/drawer_navigation_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" android:fitsSystemWindows="true" app:menu="@menu/all_navigation_menu" app:itemIconTint="@color/colorPrimary" app:itemBackground="@drawable/bg_drawer_item" android:background="@color/default_background"/>
And use LayerDrawable as the background. It preserves material design ripple overlay for clicks.
<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle"> <solid android:color="@color/white"/> </shape> </item> <item android:left="@dimen/activity_horizontal_margin"> <shape android:shape="rectangle"> <solid android:color="@color/divider"/> </shape> </item> <item android:bottom="1dp"> <shape android:shape="rectangle"> <solid android:color="@color/white"/> </shape> </item></layer-list>
The result: