Użyj plakietki, aby wyświetlić mały element wizualny oznaczający stan lub wartość liczbową na innym komponencie. Oto kilka typowych sytuacji, w których możesz użyć plakietki:
- Powiadomienia: wyświetlanie liczby nieprzeczytanych powiadomień na ikonie aplikacji lub dzwonku powiadomień.
- Wiadomości: wskazuje nowe lub nieprzeczytane wiadomości w aplikacji do czatowania.
- Aktualizacje stanu: pokazują stan zadania, np. „ukończone”, „w toku” lub „nieudane”.
- Liczba produktów w koszyku: wyświetla liczbę produktów w koszyku użytkownika.
- Nowe treści: wyróżnij nowe treści lub funkcje dostępne dla użytkownika.
Powierzchnia interfejsu API
Użyj funkcji kompozycyjnej BadgedBox
, aby zaimplementować plakietki w aplikacji. Jest to w końcu kontener. Wygląd możesz kontrolować za pomocą tych 2 głównych parametrów:
content
: treść, z której można utworzyć komponent, zawarta wBadgedBox
. ZwykleIcon
.badge
: komponent kompozycyjny, który pojawia się jako plakietka nad treścią. Zwykle jest to dedykowany komponentBadge
.
Podstawowy przykład
Ten fragment kodu pokazuje podstawową implementację BadgedBox
:
@Composable fun BadgeExample() { BadgedBox( badge = { Badge() } ) { Icon( imageVector = Icons.Filled.Mail, contentDescription = "Email" ) } }
W tym przykładzie wyświetlana jest plakietka, która nakłada się na podany element kompozycyjny Icon
. Zwróć uwagę na te elementy kodu:
BadgedBox
jest kontenerem ogólnym.- Argument parametru
badge
funkcjiBadgedBox
toBadge
. Ponieważ funkcjaBadge
nie ma własnych argumentów, aplikacja wyświetla domyślny znaczek, czyli małe czerwone kółko. Icon
jest argumentem parametrucontent
funkcjiBadgedBox
. Jest to ikona, nad którą wyświetla się plakietka. W tym przypadku jest to ikona poczty.
Wygląda to tak:

Szczegółowy przykład
Poniższy fragment kodu pokazuje, jak wyświetlać w plakietce wartości, które reagują na działania użytkownika.
@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") } } }
W tym przykładzie zaimplementowano ikonę koszyka z odznaką, która wyświetla liczbę produktów w koszyku użytkownika.
- Ikona
BadgedBox
jest wyświetlana tylko wtedy, gdy liczba produktów jest większa niż 0. - Argumenty
containerColor
icontentColor
określają wygląd plakietki. - Kompozycja
Text
dla miejsca na treść wBadge
pojawia się w odznace. W tym przypadku wyświetla liczbę produktów w koszyku.
Ta implementacja wygląda tak:
