如何为 material 库(版本 1.1.0-alpha08)的 BottomNavigationView 的 menuItem 显示徽章?

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

我只想在我的应用程序中为 menuItemBottomNavigationView 添加徽章。我正在使用 Material 组件库(版本 1.1.0-alpha08)的 BottomNavigationView,因为它的最新版本是在 7 天前发布的,从现在开始我没有找到任何相同的教程,现在因为此版本的 BottomNavigationView 的 showBadge 方法发生了变化,我们无法使用该方法。

我尝试通过 BottomNavigationView.

的实例调用 getBadgegetOrCreateBadge 方法
BottomNavigationView bottomNavigationView = findViewById(R.id.bottom_nav);
if (bottomNavigationView.getBadge(3) == null) {
    audioPlayingCountBadge = bottomNavigationView.getOrCreateBadge(3);
    audioPlayingCountBadge.setBackgroundColor(
        getResources().getColor(R.color.colorPrimaryDark)
    );
} else {
    audioPlayingCountBadge = bottomNavigationView.getBadge(3);
}
audioPlayingCountBadge.setVisible(true);

如果有人能详细提供这个问题的解决方案,将不胜感激。

  • 首先将你的项目迁移到androidX。
  • 在您的 build.gradle 中包含依赖项:

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

  • 你的 Base AppLevel 主题应该使用 Material Component 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代码:

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布局:

 <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"/>

2021年,显示圆点通知真的很简单只需要添加1行。

bottomNavigationView=findViewById(R.id.YOUR_BOTTOM_NAVIGATION_LAYOUT_ID);

要在底部导航项上显示点,只需使用这个 bottomNavigationView.getOrCreateBadge(R.id.YOUR_NAV_ITEM_ID).setVisible(true);

和 要隐藏底部导航项上的点,请使用此行 bottomNavigationView.getOrCreateBadge(R.id.YOUR_NAV_ITEM_ID).setVisible(false);

如果您只想浏览最新文档,也可以设置数字。