[英]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
的人来说,另一种方法是使用下面的方法;
确保底部导航上的主题设置为: Theme.MaterialComponents.Light.DarkActionBar
那么现在:
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.