徽章 (Badges)
源:Badges
徽章在导航项和图标上显示通知、计数或状态信息。

变体对比
- Small badge (小徽章): 仅显示一个点,表示有新动态。
- Large badge (大徽章): 包含数字或简短文本(如 "99+")。
代码实现
推荐使用 BadgeDrawable 配合 BadgeUtils 或直接在导航组件中使用。
1. 在 BottomNavigationView 中使用
kotlin
val badge = bottomNavigation.getOrCreateBadge(R.id.nav_messages)
badge.isVisible = true
badge.number = 8kotlin
val badge = bottomNavigation.getOrCreateBadge(R.id.nav_settings)
badge.isVisible = true
// 不设置 number 即为小点2. 绑定到任意 View
kotlin
val badgeDrawable = BadgeDrawable.create(context)
badgeDrawable.number = 5
// 关键:将徽章附着到某个 View
BadgeUtils.attachBadgeDrawable(badgeDrawable, myIconView)核心属性
| 属性 | 描述 | 默认值 |
|---|---|---|
app:backgroundColor | 背景颜色 | ?attr/colorError |
app:badgeTextColor | 文本颜色 | ?attr/colorOnError |
app:maxCharacterCount | 最大字符数 | 4 |
app:badgeGravity | 位置 (TOP_END 等) | TOP_END |
辅助功能 (TalkBack)
徽章会自动合并到其锚定视图的描述中。例如,如果图标描述是“消息”,徽章数字是“5”,TalkBack 会朗读为“消息,5 条新通知”。