Mit einem Logo können Sie ein kleines visuelles Element anzeigen, um den Status oder einen numerischen Wert für ein anderes Composeable anzugeben. Hier sind einige häufige Szenarien, in denen Sie ein Logo verwenden können:
- Benachrichtigungen: Die Anzahl der ungelesenen Benachrichtigungen wird auf einem App-Symbol oder der Benachrichtigungsglocke angezeigt.
- Nachrichten: Gibt neue oder ungelesene Nachrichten in einer Chat-Anwendung an.
- Statusaktualisierungen: Hier sehen Sie den Status einer Aufgabe, z. B. „Abgeschlossen“, „In Bearbeitung“ oder „Fehlgeschlagen“.
- Warenkorbmenge: Die Anzahl der Artikel im Einkaufswagen eines Nutzers.
- Neue Inhalte: Heben Sie neue Inhalte oder Funktionen hervor, die für den Nutzer verfügbar sind.
API-Oberfläche
Verwenden Sie das BadgedBox
-Kompositelement, um Logos in Ihrer App zu implementieren. Es ist letztendlich ein Container. Die Darstellung lässt sich mit den folgenden beiden Hauptparametern steuern:
content
: Die zusammensetzbaren Inhalte, die dieBadgedBox
enthält. In der RegelIcon
.badge
: Das Element, das als Symbol über dem Inhalt angezeigt wird. In der Regel ist das die spezielleBadge
-Komposition.
Einfaches Beispiel
Dieses Code-Snippet zeigt eine grundlegende Implementierung von BadgedBox
:
@Composable fun BadgeExample() { BadgedBox( badge = { Badge() } ) { Icon( imageVector = Icons.Filled.Mail, contentDescription = "Email" ) } }
In diesem Beispiel wird ein Logo angezeigt, das das bereitgestellte Icon
-Kompositelement überlappt. Beachten Sie im Code Folgendes:
BadgedBox
dient als Gesamtcontainer.- Das Argument für den Parameter
badge
vonBadgedBox
istBadge
. DaBadge
keine eigenen Argumente hat, wird in der App das Standardsymbol angezeigt, ein kleiner roter Kreis. Icon
dient als Argument für den Parametercontent
vonBadgedBox
. Das Symbol, über dem das Gütesiegel angezeigt wird. In diesem Fall ist es ein E-Mail-Symbol.
Das sieht dann so aus:

Detailliertes Beispiel
Das folgende Snippet zeigt, wie Sie Werte im Logo anzeigen können, die auf Nutzeraktionen reagieren.
@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") } } }
In diesem Beispiel wird ein Einkaufswagensymbol mit einem Logo implementiert, das die Anzahl der Artikel im Einkaufswagen des Nutzers anzeigt.
- Das Symbol
BadgedBox
wird nur angezeigt, wenn die Artikelanzahl größer als 0 ist. - Mit den Argumenten für
containerColor
undcontentColor
wird die Darstellung des Logos gesteuert. - Das
Text
-Element für den Inhalts-Slot vonBadge
wird im Logo angezeigt. In diesem Fall wird die Anzahl der Artikel im Einkaufswagen angezeigt.
Diese Implementierung sieht so aus:
