Skip to content Skip to sidebar Skip to footer

How To Create Android Custom Striped Navigation Drawer?

I want to make Striped Navigation Drawer, How to create something just like this?

Solution 1:

1. Create a custom layout XML for your custom NavigationView.

nav_custom_layout.xml

<?xml version="1.0" encoding="utf-8"?><ScrollViewxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:background="#efefef"><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="160dp"><ImageViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:src="@drawable/dummy_recipe"android:scaleType="centerCrop"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_alignParentBottom="true"android:layout_marginLeft="24dp"android:layout_marginBottom="24dp"android:textSize="28sp"android:textColor="@android:color/white"android:text="Menu"></TextView></RelativeLayout><!-- Home --><LinearLayoutandroid:id="@+id/custom_menu_home"android:layout_width="match_parent"android:layout_height="60dp"android:orientation="horizontal"android:background="#efefef"android:gravity="center_vertical"android:paddingLeft="24dp"android:paddingRight="24dp"><ImageViewandroid:layout_width="24dp"android:layout_height="24dp"android:src="@drawable/ic_action_home"/><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="30dp"android:maxLines="1"android:textSize="16sp"android:textColor="#555555"android:text="Home"/></LinearLayout><!-- Shopping List --><LinearLayoutandroid:id="@+id/custom_menu_shopping_list"android:layout_width="match_parent"android:layout_height="60dp"android:orientation="horizontal"android:background="#ffffff"android:gravity="center_vertical"android:paddingLeft="24dp"android:paddingRight="24dp"><ImageViewandroid:layout_width="24dp"android:layout_height="24dp"android:src="@drawable/ic_action_list"/><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="30dp"android:maxLines="1"android:textSize="16sp"android:textColor="#555555"android:text="Shopping List"/></LinearLayout><!-- Search --><LinearLayoutandroid:id="@+id/custom_menu_search"android:layout_width="match_parent"android:layout_height="60dp"android:orientation="horizontal"android:background="#efefef"android:gravity="center_vertical"android:paddingLeft="24dp"android:paddingRight="24dp"><ImageViewandroid:layout_width="24dp"android:layout_height="24dp"android:src="@drawable/ic_action_search"/><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="30dp"android:maxLines="1"android:textSize="16sp"android:textColor="#555555"android:text="Search"/></LinearLayout><!-- My Yums --><LinearLayoutandroid:id="@+id/custom_menu_my_yums"android:layout_width="match_parent"android:layout_height="60dp"android:orientation="horizontal"android:background="#ffffff"android:gravity="center_vertical"android:paddingLeft="24dp"android:paddingRight="24dp"><ImageViewandroid:layout_width="24dp"android:layout_height="24dp"android:src="@drawable/ic_action_yums"/><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="30dp"android:maxLines="1"android:textSize="16sp"android:textColor="#555555"android:text="My Yums"/></LinearLayout><!-- Settings --><LinearLayoutandroid:id="@+id/custom_menu_settings"android:layout_width="match_parent"android:layout_height="60dp"android:orientation="horizontal"android:background="#efefef"android:gravity="center_vertical"android:paddingLeft="24dp"android:paddingRight="24dp"><ImageViewandroid:layout_width="24dp"android:layout_height="24dp"android:src="@drawable/ic_action_settings"/><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="30dp"android:maxLines="1"android:textSize="16sp"android:textColor="#555555"android:text="Settings"/></LinearLayout><!-- Invite Friends --><LinearLayoutandroid:id="@+id/custom_menu_invite_friends"android:layout_width="match_parent"android:layout_height="60dp"android:orientation="horizontal"android:background="#ffffff"android:gravity="center_vertical"android:paddingLeft="24dp"android:paddingRight="24dp"><ImageViewandroid:layout_width="24dp"android:layout_height="24dp"android:src="@drawable/ic_action_invite"/><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="30dp"android:maxLines="1"android:textSize="16sp"android:textColor="#555555"android:text="Invite Friends"/></LinearLayout></LinearLayout></ScrollView>

2. Add custom layout nav_custom_layout inside your NavigationView.

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

3. Set onClick listener to custom menu item(LinearLayout) and change state using method toggleMenuState().

publicclassMainActivityextendsAppCompatActivity
        implements View.OnClickListener {


    LinearLayout customNavMenuHome;
    LinearLayout customNavMenuShoppingList;
    LinearLayout customNavMenuSearch;
    LinearLayout customNavMenuMyYums;
    LinearLayout customNavMenuSettings;
    LinearLayout customNavMenuInviteFirends;

    TextView textHome, textShoppingList, textSerach, textMyYums, textSettings, textInviteFriends;
    ImageView iconHome, iconShoppingList, iconSerach, iconMyYums, iconSettings, iconInviteFriends;

    DrawerLayout mDrawer;
    NavigationView mNavigationView;

    int previousMenu;
    int currentMenu;


    private static final int MENU_HOME = 1;
    private static final int MENU_SHOPPING_LIST = 2;
    private static final int MENU_SEARCH = 3;
    private static final int MENU_MY_YUMS = 4;
    private static final int MENU_SETTINGS = 5;
    private static final int MENU_INVITE_FRIENDS = 6;

    @Overrideprotected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ............
        ......................    

        mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        ............
        ......................

        // NavigationView
        mNavigationView = (NavigationView) findViewById(R.id.nav_view);

        // Menus
        customNavMenuHome = (LinearLayout) findViewById(R.id.custom_menu_home);
        customNavMenuShoppingList = (LinearLayout) findViewById(R.id.custom_menu_shopping_list);
        customNavMenuSearch = (LinearLayout) findViewById(R.id.custom_menu_search);
        customNavMenuMyYums = (LinearLayout) findViewById(R.id.custom_menu_my_yums);
        customNavMenuSettings = (LinearLayout) findViewById(R.id.custom_menu_settings);
        customNavMenuInviteFirends = (LinearLayout) findViewById(R.id.custom_menu_invite_friends);

        // Menu Titles
        textHome = (TextView) customNavMenuHome.findViewById(R.id.text_home);
        textShoppingList = (TextView) customNavMenuShoppingList.findViewById(R.id.text_shopping_list);
        textSerach = (TextView) customNavMenuSearch.findViewById(R.id.text_search);
        textMyYums = (TextView) customNavMenuMyYums.findViewById(R.id.text_my_yums);
        textSettings = (TextView) customNavMenuSettings.findViewById(R.id.text_settings);
        textInviteFriends = (TextView) customNavMenuInviteFirends.findViewById(R.id.text_invite_friends);

        // Menu Icons
        iconHome = (ImageView) customNavMenuHome.findViewById(R.id.icon_home);
        iconShoppingList = (ImageView) customNavMenuShoppingList.findViewById(R.id.icon_shopping_list);
        iconSerach = (ImageView) customNavMenuSearch.findViewById(R.id.icon_search);
        iconMyYums = (ImageView) customNavMenuMyYums.findViewById(R.id.icon_my_yums);
        iconSettings = (ImageView) customNavMenuSettings.findViewById(R.id.icon_settings);
        iconInviteFriends = (ImageView) customNavMenuInviteFirends.findViewById(R.id.icon_invite_friends);

        // Set click listeners
        customNavMenuHome.setOnClickListener(this);
        customNavMenuShoppingList.setOnClickListener(this);
        customNavMenuSearch.setOnClickListener(this);
        customNavMenuMyYums.setOnClickListener(this);
        customNavMenuSettings.setOnClickListener(this);
        customNavMenuInviteFirends.setOnClickListener(this);

        // Default
        previousMenu = MENU_HOME;
        currentMenu = MENU_HOME;

        toggleMenuState();  
    }

    @Overridepublic void onClick(View view) {

        // Store current menu
        previousMenu = currentMenu;

        switch (view.getId()) {
            case R.id.custom_menu_home: {
                currentMenu = MENU_HOME;

                Toast.makeText(this, "Home clicked", Toast.LENGTH_SHORT).show();
                break;
            }
            case R.id.custom_menu_shopping_list: {
                currentMenu = MENU_SHOPPING_LIST;

                Toast.makeText(this, "Shopping List clicked", Toast.LENGTH_SHORT).show();
                break;
            }
            case R.id.custom_menu_search: {
                currentMenu = MENU_SEARCH;

                Toast.makeText(this, "Search clicked", Toast.LENGTH_SHORT).show();
                break;
            }
            case R.id.custom_menu_my_yums: {
                currentMenu = MENU_MY_YUMS;

                Toast.makeText(this, "My Yums clicked", Toast.LENGTH_SHORT).show();
                break;
            }
            case R.id.custom_menu_settings: {
                currentMenu = MENU_SETTINGS;

                Toast.makeText(this, "Settings clicked", Toast.LENGTH_SHORT).show();
                break;
            }
            case R.id.custom_menu_invite_friends: {
                currentMenu = MENU_INVITE_FRIENDS;

                Toast.makeText(this, "Invite Friends clicked", Toast.LENGTH_SHORT).show();
                break;
            }
        }

        // Change selected menu state
        toggleMenuState();

        // Close drawer
        mDrawer.closeDrawer(GravityCompat.START);
    }

    // Required to change selection state of custom menupublic void toggleMenuState() {

        // Reset
        switch (previousMenu) {
            case MENU_HOME: {
                customNavMenuHome.setBackgroundColor(Color.parseColor("#efefef"));
                textHome.setTextColor(Color.parseColor("#555555"));
                break;
            }
            case MENU_SHOPPING_LIST: {
                customNavMenuShoppingList.setBackgroundColor(Color.parseColor("#ffffff"));
                textShoppingList.setTextColor(Color.parseColor("#555555"));
                break;
            }
            case MENU_SEARCH: {
                customNavMenuSearch.setBackgroundColor(Color.parseColor("#efefef"));
                textSerach.setTextColor(Color.parseColor("#555555"));
                break;
            }
            case MENU_MY_YUMS: {
                customNavMenuMyYums.setBackgroundColor(Color.parseColor("#ffffff"));
                textMyYums.setTextColor(Color.parseColor("#555555"));
                break;
            }
            case MENU_SETTINGS: {
                customNavMenuSettings.setBackgroundColor(Color.parseColor("#efefef"));
                textSettings.setTextColor(Color.parseColor("#555555"));
                break;
            }
            case MENU_INVITE_FRIENDS: {
                customNavMenuInviteFirends.setBackgroundColor(Color.parseColor("#ffffff"));
                textInviteFriends.setTextColor(Color.parseColor("#555555"));
                break;
            }
        }

        // Set icon default colors
        iconHome.setColorFilter(Color.DKGRAY);
        iconShoppingList.setColorFilter(Color.DKGRAY);
        iconSerach.setColorFilter(Color.DKGRAY);
        iconMyYums.setColorFilter(Color.DKGRAY);
        iconSettings.setColorFilter(Color.DKGRAY);
        iconInviteFriends.setColorFilter(Color.DKGRAY);

        // Selected menu :: GRAY color
        switch (currentMenu) {
            case MENU_HOME: {
                customNavMenuHome.setBackgroundColor(Color.GRAY);
                iconHome.setColorFilter(Color.WHITE);
                textHome.setTextColor(Color.WHITE);
                break;
            }
            case MENU_SHOPPING_LIST: {
                customNavMenuShoppingList.setBackgroundColor(Color.GRAY);
                iconShoppingList.setColorFilter(Color.WHITE);
                textShoppingList.setTextColor(Color.WHITE);
                break;
            }
            case MENU_SEARCH: {
                customNavMenuSearch.setBackgroundColor(Color.GRAY);
                iconSerach.setColorFilter(Color.WHITE);
                textSerach.setTextColor(Color.WHITE);
                break;
            }
            case MENU_MY_YUMS: {
                customNavMenuMyYums.setBackgroundColor(Color.GRAY);
                iconMyYums.setColorFilter(Color.WHITE);
                textMyYums.setTextColor(Color.WHITE);
                break;
            }
            case MENU_SETTINGS: {
                customNavMenuSettings.setBackgroundColor(Color.GRAY);
                iconSettings.setColorFilter(Color.WHITE);
                textSettings.setTextColor(Color.WHITE);
                break;
            }
            case MENU_INVITE_FRIENDS: {
                customNavMenuInviteFirends.setBackgroundColor(Color.GRAY);
                iconInviteFriends.setColorFilter(Color.WHITE);
                textInviteFriends.setTextColor(Color.WHITE);
                break;
            }
        }
    }
}

OUTPUT:

enter image description here

enter image description here

Hope this will help~

Post a Comment for "How To Create Android Custom Striped Navigation Drawer?"