Используйте значок для отображения небольшого визуального элемента для обозначения статуса или числового значения на другом составном объекте. Вот несколько распространенных сценариев, в которых вы можете использовать значок:
- Уведомления : отображение количества непрочитанных уведомлений на значке приложения или в колокольчике.
- Сообщения : укажите новые или непрочитанные сообщения в приложении чата.
- Обновления статуса : отображение статуса задачи, например «выполнено», «в работе» или «не выполнено».
- Количество в корзине : отображение количества товаров в корзине пользователя.
- Новый контент : выделите новый контент или функции, доступные пользователю.
поверхность API
Используйте компонуемый BadgedBox
для реализации значков в вашем приложении. В конечном итоге это контейнер. Вы управляете его внешним видом с помощью этих двух основных параметров:
-
content
: составное содержимое, которое содержитBadgedBox
. ОбычноIcon
. -
badge
: составной элемент, который отображается в виде значка поверх содержимого. Обычно специальныйBadge
можно составить.
Базовый пример
В этом фрагменте кода показана базовая реализация BadgedBox
:
@Composable fun BadgeExample() { BadgedBox( badge = { Badge() } ) { Icon( imageVector = Icons.Filled.Mail, contentDescription = "Email" ) } }
В этом примере отображается значок, который перекрывает предоставленный составной Icon
. Обратите внимание на следующее в коде:
-
BadgedBox
служит общим контейнером. - Аргументом параметра
badge
BadgedBox
являетсяBadge
. ПосколькуBadge
не имеет собственных аргументов, приложение отображает значок по умолчанию в виде небольшого красного кружка. -
Icon
служит аргументом для параметраcontent
BadgedBox
. Это значок, над которым отображается значок. В данном случае это значок почты.
Вот как это выглядит:
Подробный пример
В следующем фрагменте показано, как можно отображать на значке значения, которые реагируют на действия пользователя.
@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
управляют внешним видом значка. -
Text
, который можно составить для слота содержимогоBadge
отображается внутри значка. В данном случае отображается количество товаров в корзине.
Эта реализация выглядит следующим образом: