Utilizza un badge per visualizzare un piccolo elemento visivo che indichi lo stato o un valore numerico su un altro composable. Ecco alcuni scenari comuni in cui puoi utilizzare un badge:
- Notifiche: mostra il numero di notifiche non lette su un'icona dell'app o sul simbolo a forma di campana delle notifiche.
- Messaggi: indica i messaggi nuovi o da leggere all'interno di un'applicazione di chat.
- Aggiornamenti stato: mostrano lo stato di un'attività, ad esempio "completata", "in corso" o "non riuscita".
- Quantità carrello: mostra il numero di articoli nel carrello di un utente.
- Nuovi contenuti: metti in evidenza i nuovi contenuti o le nuove funzionalità disponibili per l'utente.
API surface
Utilizza il composable BadgedBox
per implementare i badge nella tua applicazione. Si tratta di un contenitore. Puoi controllare l'aspetto con questi due
parametri principali:
content
: i contenuti componibili inclusi inBadgedBox
. In genereIcon
.badge
: il composable visualizzato come badge sopra i contenuti. In genere, il composableBadge
dedicato.
Esempio di base
Questo snippet di codice mostra un'implementazione di base di BadgedBox
:
@Composable fun BadgeExample() { BadgedBox( badge = { Badge() } ) { Icon( imageVector = Icons.Filled.Mail, contentDescription = "Email" ) } }
Questo esempio mostra un badge che si sovrappone al componibile Icon
fornito. Nota quanto segue nel codice:
BadgedBox
funge da contenitore complessivo.- L'argomento per il parametro
badge
diBadgedBox
èBadge
. PoichéBadge
non ha argomenti propri, l'app mostra il badge predefinito, ovvero un piccolo cerchio rosso. Icon
funge da argomento per il parametrocontent
diBadgedBox
. È l'icona sopra la quale viene visualizzato il badge. In questo caso, si tratta di un'icona a forma di posta.
Ecco come appare:
Esempio dettagliato
Il seguente snippet mostra come visualizzare nel badge i valori che reagiscono alle azioni dell'utente.
@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") } } }
Questo esempio implementa un'icona del carrello degli acquisti con un badge che mostra il numero di articoli nel carrello dell'utente.
BadgedBox
viene visualizzato solo quando il conteggio degli articoli è superiore a 0.- Gli argomenti per
containerColor
econtentColor
controllano l'aspetto del badge. - Il composable
Text
per lo slot dei contenuti diBadge
viene visualizzato all'interno del badge. In questo caso, viene visualizzato il numero di articoli nel carrello.
Questa implementazione è visualizzata come segue: