Search code examples
androiddrawernavigationview

Create numeric indicator at a navigation view item android


I just created a navigation view drawer using menu:

<group
    android:id="@+id/menu_top">
    <item
        android:id="@+id/nav_1"
        android:icon="@drawable/ic_menu_camera"
        android:title="Camera" />
    <item
        android:id="@+id/nav_2"
        android:icon="@drawable/ic_menu_gallery"
        android:title="Gallery" />
    <item
        android:id="@+id/nav_3"
        android:icon="@drawable/ic_menu_slideshow"
        android:title="Slideshow"/>
</group>

Now, I wonder how to add a numerical indicator on one of its items. Just like when Google Play Store having some updates on our installed apps. For example, item cart on screenshot below:

enter image description here

Any suggestions? Thank you.


Solution

  • 1) Use actionLayout in your menu items:

    <item
        android:id="@+id/nav_1"
        android:icon="@drawable/ic_menu_camera"
        android:title="Camera"
        app:actionLayout="@layout/view_counter" />
    

    2) Create view_counter

    <TextView
        android:id="@+id/tvCounter" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical" />
    

    3) Find MenuItem and set counter

    MenuItem mItem = mNavView.getMenu().findItem(nav_1); // Find navigation item
    View view = mItem.getActionView();
    if (view instanceOf TextView) { // Double check, returned view is TextView
        ((TextView) view).setText(count);
    }