使用 徽章 在另一个可组合项上显示一个小的视觉元素,以指示状态或数值。以下是一些您可能使用徽章的常见场景
- 通知:在应用程序图标或通知铃铛上显示未读通知的数量。
- 消息:在聊天应用程序中指示新的或未读消息。
- 状态更新:显示任务状态,例如“已完成”、“正在进行”或“失败”。
- 购物车数量:显示用户购物车中的商品数量。
- 新内容:突出显示用户可以使用的新的内容或功能。
API 表面
使用 BadgedBox
可组合项在您的应用程序中实现徽章。它最终是一个容器。您可以使用以下两个主要参数控制其外观
content
:BadgedBox
包含的可组合内容。通常为Icon
。badge
:作为徽章显示在内容之上的可组合项。通常是专用的Badge
可组合项。
基本示例
此代码片段显示了 BadgedBox
的基本实现
@Composable fun BadgeExample() { BadgedBox( badge = { Badge() } ) { Icon( imageVector = Icons.Filled.Mail, contentDescription = "Email" ) } }
此示例显示一个重叠提供的 Icon
可组合项的徽章。请注意代码中的以下内容
BadgedBox
充当整体容器。BadgedBox
的badge
参数的参数是Badge
。由于Badge
本身没有参数,因此应用程序将显示默认徽章,即一个小红圈。Icon
充当BadgedBox
的content
参数的参数。它是徽章显示在其上的图标。在本例中,它是一个邮件图标。
它的外观如下
详细示例
以下代码段演示了如何在徽章中显示响应用户操作的值。
@Composable fun BadgeInteractiveExample() { var itemCount by remember { mutableStateOf(0) } Column( verticalArrangement = Arrangement.spacedBy(16.dp) ) { BadgedBox( badge = { if (itemCount > 0) { Badge( containerColor = Color.Red, contentColor = Color.White ) { Text("$itemCount") } } } ) { Icon( imageVector = Icons.Filled.ShoppingCart, contentDescription = "Shopping cart", ) } Button(onClick = { itemCount++ }) { Text("Add item") } } }
此示例实现了一个带徽章的购物车图标,徽章显示用户购物车中的商品数量。
BadgedBox
仅在商品数量超过 0 时显示。containerColor
和contentColor
的参数控制徽章的外观。Badge
内容插槽的Text
可组合项显示在徽章内。在本例中,它显示了购物车中的商品数量。
此实现的显示如下