【问题标题】:How to display badge for a menuItem of BottomNavigationView of material library (version 1.1.0-alpha08)?材质库(1.1.0-alpha08版)BottomNavigationView的menuItem如何显示徽章?
【发布时间】:2019-11-26 03:26:08
【问题描述】:

我只想在我的应用中为BottomNavigationView 中的menuItem 添加徽章。我正在使用 Material Components 库(版本 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);

如果有人能详细提供这个问题的解决方案,将非常感谢我。

【问题讨论】:

    标签: android bottomnavigationview material-components-android material-components


    【解决方案1】:
    • 首先将您的项目迁移到 androidX。 How to migrate
    • 在您的build.gradle 中包含依赖项:

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

    • 您的基本 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>
    

    活动代码:

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

    【讨论】:

    • 它通过将变量 menuItemId 的数据类型更改为 int 来工作。谢谢@SumitShukla
    • 天哪,谢谢你,我想知道从 1.1.0alpha07 升级时 showBadge 发生了什么
    【解决方案2】:

    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);

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

    【讨论】:

    • 嗨。我正在尝试做同样的事情。但工作室并非无法引用 getOrCreateBadge 方法。你能帮我解决这个问题吗
    • 你有没有初始化底部导航,因为它会给它提供选项。?
    • 是的,我做到了。但在android studio中也找不到badgeDrawable类
    • 请添加Gradle依赖implementation 'com.google.android.matetial.matetial.1.2.1'
    猜你喜欢
    • 2019-08-15
    • 2017-06-24
    • 2020-09-19
    • 2020-02-18
    • 1970-01-01
    • 2019-02-25
    • 1970-01-01
    • 2019-05-09
    • 2019-06-03
    相关资源
    最近更新 更多