繁体   English   中英

如何在底部导航视图上添加通知徽章?

[英]How to add notification badge on Bottom Navigation View?

<item
        android:id="@+id/nav_gallery"
        app:actionViewClass="android.widget.TextView"/>

这是底部导航的菜单。

   TextView gallery=(TextView)  
   MenuItemCompat.getActionView(navigationView.getMenu().
   findItem(R.id.nav_gallery)); //getting menu item of bottom nav view
   gallery.setText("99+");

但是此代码不适用于底部导航视图。显示 BottomNavigationView 时未设置任何通知计数器。

最新的 Material 依赖现在支持原生添加徽章计数,只需更新 build.gradle 中的 Material 依赖

implementation 'com.google.android.material:material:1.1.0-alpha09'

并添加

val navBar  = findViewById<BottomNavigationView>(R.id.bottom_navigation)
navBar.getOrCreateBadge(R.id.action_stamp).number = 2

在 style.xml 中只需将“AppCompat”更改为“MaterialComponents”

<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">

首先创建徽章的布局文件,然后按照以下步骤操作

BottomNavigationMenuView menuView = (BottomNavigationMenuView) navigation.getChildAt(0);
 
BottomNavigationItemView itemView = (BottomNavigationItemView) menuView.getChildAt(2);

View messageBadgeView = LayoutInflater.from(this).inflate(R.layout.message_badge_view, menuView, false);    
TextView textView = messageBadgeView.findViewById(R.id.counter_badge);        
textView.setText("15");

itemView.addView(messageBadgeView);`

对于那些无法访问getOrCreaeteBadge的人来说,另一种方法是使用下面的方法;

  1. 确保底部导航上的主题设置为: Theme.MaterialComponents.Light.DarkActionBar

  2. 那么现在:

     String messages = getIntent().getStringExtra("messages_count"); messages = messages.substring(10,11); Log.d("MessagesCount", "getIncomingIntent: "+messages); navigation.showBadge(R.id.bottom_messages).setNumber(Integer.parseInt(messages));

你很高兴去! 示例输出如下

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM