Use um selo para mostrar um pequeno elemento visual e indicar o status. ou um valor numérico em outro elemento combinável. Aqui estão alguns cenários comuns em que você pode usar um selo:
- Notificações: mostrar o número de notificações não lidas no ícone de um app. ou sino de notificação.
- Mensagens: indique mensagens novas ou não lidas em um aplicativo de chat.
- Atualizações de status: mostram o status de uma tarefa, como "concluída". "no progresso", ou "falha".
- Quantidade do carrinho: exibe o número de itens no carrinho de compras de um usuário.
- Novo conteúdo: destaque novos conteúdos ou recursos disponíveis para o usuário.
Plataforma da API
Use o elemento combinável BadgedBox
para implementar selos no app. Ela
é, em última instância, um contêiner. Você controla a aparência dele com estas duas
parâmetros:
content
: o conteúdo combinável que oBadgedBox
contém. NormalmenteIcon
:badge
: o elemento combinável que aparece como o selo sobre o conteúdo. Normalmente, o elementoBadge
dedicado.
Exemplo básico
Este snippet de código mostra uma implementação básica de BadgedBox
:
@Composable fun BadgeExample() { BadgedBox( badge = { Badge() } ) { Icon( imageVector = Icons.Filled.Mail, contentDescription = "Email" ) } }
O exemplo mostra um selo que se sobrepõe ao elemento combinável Icon
fornecido. Observação
no código:
BadgedBox
serve como o contêiner geral.- O argumento para o parâmetro
badge
deBadgedBox
éBadge
. ComoBadge
não tem argumentos próprios, o app mostra o padrão que é um pequeno círculo vermelho. Icon
serve como argumento para o parâmetrocontent
deBadgedBox
. Ela é o ícone sobre o qual o selo aparece. Nesse caso, é um ícone de e-mail.
Ele aparece assim:
Exemplo detalhado
O snippet a seguir demonstra como exibir valores no selo que responder às ações do usuário.
@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") } } }
Este exemplo implementa um ícone de carrinho de compras com um selo que exibe o número de itens no carrinho do usuário.
- O
BadgedBox
só aparece quando a contagem de itens é maior que zero. - Os argumentos de
containerColor
econtentColor
controlam a aparência do selo. - O elemento combinável
Text
para o slot de conteúdo deBadge
aparece em o selo. Nesse caso, ele mostra o número de itens no carrinho.
Essa implementação aparece da seguinte maneira: