Usa una insignia para mostrar un pequeño elemento visual que indique el estado. o un valor numérico en otro elemento componible. Estos son algunos casos comunes en los que puedes usar una insignia:
- Notificaciones: Muestra la cantidad de notificaciones no leídas en el ícono de la app. o la campana de notificaciones.
- Mensajes: Indica los mensajes nuevos o no leídos en una aplicación de chat.
- Actualizaciones de estado: Muestran el estado de una tarea, como "completada". "en progresos", o con errores.
- Cantidad del carrito: Muestra la cantidad de artículos en el carrito de compras del usuario.
- Contenido nuevo: Destaca el contenido o las funciones nuevos disponibles para el usuario.
Plataforma de API
Usa el elemento componible BadgedBox
para implementar insignias en tu aplicación. Integra
es, en última instancia, un contenedor. Puedes controlar su apariencia con estos dos métodos
parámetros:
content
: Es el contenido componible que incluye elBadgedBox
. Precio habitualIcon
badge
: Es el elemento componible que aparece como insignia sobre el contenido. Por lo general, es el elementoBadge
componible dedicado.
Ejemplo básico
En este fragmento de código, se muestra una implementación básica de BadgedBox
:
@Composable fun BadgeExample() { BadgedBox( badge = { Badge() } ) { Icon( imageVector = Icons.Filled.Mail, contentDescription = "Email" ) } }
En este ejemplo, se muestra una insignia que se superpone con el elemento componible Icon
proporcionado. Nota
lo siguiente en el código:
BadgedBox
funciona como el contenedor general.- El argumento del parámetro
badge
deBadgedBox
esBadge
. ComoBadge
no tiene argumentos propios, la app muestra la configuración que es un pequeño círculo rojo. Icon
sirve como argumento del parámetrocontent
deBadgedBox
. Integra es el icono sobre el que aparece la insignia. En este caso, es un ícono de correo electrónico.
Así es como se ve:
Ejemplo detallado
El siguiente fragmento demuestra cómo puedes mostrar valores en la insignia que responder a las acciones del usuario.
@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") } } }
En este ejemplo, se implementa un ícono de carrito de compras con una insignia que muestra el la cantidad de artículos en el carrito del usuario.
- Solo se muestra
BadgedBox
cuando el recuento de elementos es superior a 0. - Los argumentos de
containerColor
ycontentColor
controlan la apariencia. de la insignia. - El elemento
Text
componible para el espacio de contenido deBadge
aparece en la insignia. En este caso, muestra la cantidad de artículos en el carrito.
Esta implementación aparece de la siguiente manera: