Use um selo para mostrar um pequeno elemento visual que indica o status ou um valor numérico em outro elemento combinável. Confira alguns cenários comuns em que você pode usar um selo:
- Notificações: mostre o número de notificações não lidas em um ícone do app ou sininho de notificação.
- Mensagens: indique mensagens novas ou não lidas em um aplicativo de chat.
- Atualizações de status: mostre o status de uma tarefa, como "concluída", "em andamento" ou "falha".
- Quantidade no carrinho: mostre 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.
Superfície da API
Use o elemento combinável BadgedBox para implementar selos no seu aplicativo. Ele é um contêiner. Você controla a aparência dele com estes dois parâmetros principais:
content: o conteúdo combinável que oBadgedBoxcontém. NormalmenteIcon.badge: o elemento combinável que aparece como o selo sobre o conteúdo. Normalmente o elemento combinávelBadgededicado.
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" ) } }
Este exemplo mostra um selo que se sobrepõe ao elemento combinável Icon fornecido. Observe o seguinte no código:
BadgedBoxserve como o contêiner geral.- O argumento para o
badgeparâmetro deBadgedBoxéBadge. ComoBadgenão tem argumentos próprios, o app mostra o selo padrão, que é um pequeno círculo vermelho. Iconserve como o argumento para o parâmetrocontentdeBadgedBox. É o ícone sobre o qual o selo aparece. Nesse caso, é um ícone de e-mail.
Esta é a aparência dele:
exemplo detalhado
O snippet a seguir demonstra como mostrar valores no selo que respondem às ações do usuário.
@Composable fun BadgeInteractiveExample() { var itemCount by remember { mutableIntStateOf(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 mostra o número de itens no carrinho do usuário.
- O
BadgedBoxsó aparece quando a contagem de itens é maior que 0. - Os argumentos para
containerColorecontentColorcontrolam a aparência do selo. - O elemento combinável
Textpara o slot de conteúdo deBadgeaparece dentro do selo. Nesse caso, ele mostra o número de itens no carrinho.
Esta implementação aparece da seguinte maneira: