Material Design NavigationView for Android

Android Library to implement Rich, Beautiful Material Navigation View for your project with Material Design Guidelines. Easy to use.

MaterialNavigationView library is built upon Google's Material Design library. This API will be useful to create rich, animated, beautiful Navigation View Drawer in Android app easily. It follows all Material Design Guidelines as stated here.

MaterialNavigationView class in this library is inherited from com.google.android.material.navigation.NavigationView class. Just only difference is added extra design.

So, we can use it as it is.

Android Material Design NavigationView Example


  • AndroidX
  • Minimum SDK API 19
  • Theme - Material Components


Implementation of Material Navigation View library is so easy. You can check /app directory for demo. Let's have look on basic steps of implementation. In this demo, we will populate The menu contents by a menu resource file.



In Build.gradle of app module, include these dependencies.
dependencies {

    // Material Navigation View Library
    implementation 'com.shreyaspatil:MaterialNavigationView:1.2'

    // Material Design Library
    implementation 'com.google.android.material:material:1.0.0'

Set up Material Theme

Setting Material Theme to app is necessary before implementing Material Navigation View library. To set it up, update styles.xml of values directory in app. colorSecondary value is important here because this color is applied to menu item of Navigation View.
    <style name="AppTheme" parent="Theme.MaterialComponents.Light">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <!-- colorSecondary will be applied to Menu item of NavigationView -->
        <item name="colorSecondary">@color/colorPrimary</item>
These are required prerequisites to implement Material Navigation View library.

Create Activity XML

This is most commonly used in conjunction with DrawerLayout to implement Material navigation drawers. Navigation drawers are modal elevated dialogs that come from the start/left side, used to display in-app navigation links.
NavigationView is a scrollable view that renders a menu resource (R.menu.<something>) as a vertical list. It also renders a header view above the menu.
We are creating activity_main.xml
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"

    <!-- Other Stuff here -->



Available Flags

As already mentioned, this class is inherited from NavigationView. You can use all exisiting flags of that class.
New important flag here is.
  • itemStyle - Points to a style of menu item of Navigation drawer.
    There are currently 3 menu styles are defined as below
Flag ValueDescriptionPreview
default_styleThis flag sets design to default style to menu item of Navigation drawer.
rounded_rightThis flag sets design to menu item of Navigation drawer as Rounded Corners at right
rounded_rectangleThis flag sets design to menu item of Navigation drawer as Rounded Rectangular Corners
Example as follows:
Thus, we have successfully implemented design styles of Menu items.

Create Activity Code (Java/Kotlin)

All the programmatic way of implementation of MaterialNavigationView is same as NavigationView. Just change is the class name only.
Two methods are added in this new class as follows..
  • setItemStyle(int itemStyle) : This method sets the Item Style of Menu in MaterialNavigationView at runtime. itemStyle should be one of the following constants :
    • MaterialNavigationView.ITEM_STYLE_DEFAULT
    • MaterialNavigationView.ITEM_STYLE_ROUND_RIGHT
    • MaterialNavigationView.ITEM_STYLE_ROUND_RECTANGLE
  • getItemStyle() : It returns the value of item style of menu.
Here is a demo of MaterialNavigationView in which we will switch item style of NavigationView after selecting menu.
class MainActivity : AppCompatActivity() {
    private lateinit var navView: MaterialNavigationView

    override fun onCreate(savedInstanceState: Bundle?) {
        navView = findViewById(R.id.nav_view)

    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        when (item.itemId) {
            R.id.action_default -> {
            R.id.action_round_rect -> {
            R.id.action_round_right -> {
        return false
Thus, we have implemented MaterialNavigationView.

Migrating from NavigationView

If you are already using NavigationView (com.google.android.material.navigation.NavigationView) in your project and want to switch it to MaterialNavigationView then you are done!
Do following Changes:
  • Change in layout file - Just change package of component from com.google.android.material.navigation.NavigationView to com.shreyaspatil.material.navigationview.MaterialNavigationView wherever you used it.
  • Change in Activity Code - Just change NavigationView class to MaterialNavigationView and import appropriate package.
🔥 Hurrah! you are done and successfully migrated to MaterialNavigationView. Now just run your app and see magic.

Fast Implementation

Want to use it fast? Then here it is..
In Android Studio, Right Click -> New -> Activity -> Navigation Drawer Activity and done. Then Change just package in layout file and class name in Activity code file and you're done. Run your app and see magic 🚀


Download From GitHub
Material-Design-Example 5440241562103210119
Home item