How to display badge for a menuItem of BottomNavigationView of material library (version 1.1.0-alpha08)?

Solution 1:

  • First migrate your project to androidX. How to migrate
  • Include dependency in your build.gradle:

implementation 'com.google.android.material:material:version' Get Version

  • Your Base AppLevel theme should use Material Component Theme like:

Your App Level Theme

  <style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

Activity code:

val menuItemId: Int = btm_nav.menu.getItem(0).itemId //0 menu item index.
badgeDrawable = btm_nav.getOrCreateBadge(menuItemId)
badgeDrawable.isVisible = true
badgeDrawable.number = 10

badgeDrawable.badgeGravity = BadgeDrawable.TOP_END    //badge gravity
//BadgeDrawable.TOP_START
//BadgeDrawable.BOTTOM_END
//BadgeDrawable.BOTTOM_START

badgeDrawable.isVisible = false   //hide badge
badgeDrawable.clearNumber()

XML layout:

 <com.google.android.material.bottomnavigation.BottomNavigationView
      android:id="@+id/btm_nav"
      style="@style/Widget.Design.BottomNavigationView"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      app:menu="@menu/bottom_nav_menu"/>

Solution 2:

In 2021, showing dot notification is really simple just need to add 1 line.

bottomNavigationView=findViewById(R.id.YOUR_BOTTOM_NAVIGATION_LAYOUT_ID);

To Show dot over bottom navigation item just use this bottomNavigationView.getOrCreateBadge(R.id.YOUR_NAV_ITEM_ID).setVisible(true);

and To Hide dot over bottom nav item use this line bottomNavigationView.getOrCreateBadge(R.id.YOUR_NAV_ITEM_ID).setVisible(false);

You can also set numbers if you want just go through the latest document to read about it.