标志

使用微章可在其他可组合项上显示一个小视觉元素,以表示状态或数值。以下是一些常见的使用场景:

  • 通知:在应用图标或通知铃铛上显示未读通知的数量。
  • 消息:指示聊天应用中的新消息或未读消息。
  • 状态更新:显示任务的状态,例如“已完成”“正在进行中”或“失败”。
  • 购物车数量:显示用户购物车中的商品数量。
  • 新内容:突出显示可供用户使用的新内容或功能。
徽章组件的不同示例。
图 1. 徽章示例

API Surface

使用 BadgedBox 可组合项在应用中实现徽章。它最终是一个容器。您可以使用以下两个主要参数控制其外观:

  • contentBadgedBox 包含的可组合内容。通常为 Icon
  • badge:显示为内容上的徽章的可组合项。 通常是专用的 Badge 可组合项。

基本示例

此代码段展示了 BadgedBox 的基本实现:

@Composable fun BadgeExample() {  BadgedBox(  badge = {  Badge()  }  ) {  Icon(  imageVector = Icons.Filled.Mail,  contentDescription = "Email"  )  } }

此示例显示了一个与所提供的 Icon 可组合项重叠的微章。请注意代码中的以下事项:

  • BadgedBox 用作总体容器。
  • BadgedBoxbadge 参数的实参为 Badge。 由于 Badge 本身没有实参,因此应用会显示默认的标记(一个小红圈)。
  • Icon 用作 BadgedBoxcontent 形参的实参。徽章会显示在该图标上方。在本例中,它是邮件图标。

显示效果如下:

不包含任何内容的简单徽章。
图 2. 最低限度的徽章实现。

详细示例

以下代码段演示了如何显示徽章中响应用户操作的值。

@Composable fun BadgeInteractiveExample() {  var itemCount by remember { mutableIntStateOf(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 时显示。
  • containerColorcontentColor 的实参用于控制徽章的外观。
  • Badge 的内容槽的 Text 可组合项显示在徽章内。在这种情况下,它会显示购物车中的商品数量。

此实现如下所示:

包含购物车中商品数量的徽章实现。
图 3. 显示购物车中商品数量的徽章。

其他资源