Başka bir composable'da durumu veya sayısal değeri belirtmek için küçük bir görsel öğe görüntülemek üzere badge kullanın. Rozet kullanabileceğiniz bazı yaygın senaryolar şunlardır:
- Bildirimler: Okunmamış bildirimlerin sayısını uygulama simgesinde veya bildirim zilinde gösterir.
- Mesajlar: Bir sohbet uygulamasındaki yeni veya okunmamış mesajları gösterir.
- Durum güncellemeleri: Bir görevin durumunu gösterir (ör. "tamamlandı", "devam ediyor" veya "başarısız oldu").
- Sepet miktarı: Kullanıcının alışveriş sepetindeki öğe sayısını gösterin.
- Yeni içerik: Kullanıcının erişebileceği yeni içerikleri veya özellikleri vurgulayın.
API yüzeyi
Uygulamanızda rozetleri uygulamak için BadgedBox
composable'ını kullanın. Sonuçta bir kapsayıcıdır. Görünümünü şu iki temel parametreyle kontrol edebilirsiniz:
content
:BadgedBox
öğesinin içerdiği birleştirilebilir içerik. NormaldeIcon
.badge
: İçeriğin üzerinde rozet olarak görünen composable. Genellikle özelBadge
composable'dır.
Temel örnek
Bu kod snippet'i, BadgedBox
'nın temel bir uygulamasını gösterir:
@Composable fun BadgeExample() { BadgedBox( badge = { Badge() } ) { Icon( imageVector = Icons.Filled.Mail, contentDescription = "Email" ) } }
Bu örnekte, sağlanan Icon
composable'ı kaplayan bir rozet gösterilmektedir. Koddaki
aşağıdaki noktaları göz önünde bulundurun:
BadgedBox
genel kapsayıcı olarak kullanılır.BadgedBox
işlevininbadge
parametresinin bağımsız değişkeniBadge
.Badge
'nın kendi bağımsız değişkenleri olmadığı için uygulamada küçük bir kırmızı daire olan varsayılan rozet gösterilir.Icon
,BadgedBox
işlevinincontent
parametresinin bağımsız değişkeni olarak kullanılır. Rozetin üzerinde göründüğü simgedir. Bu durumda, posta simgesi gösterilir.
Bu özellik şu şekilde görünür:

Ayrıntılı örnek
Aşağıdaki snippet, rozetteki değerleri kullanıcı işlemlerine yanıt verecek şekilde nasıl gösterebileceğinizi gösterir.
@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") } } }
Bu örnekte, kullanıcının sepetindeki öğe sayısını gösteren bir rozet içeren alışveriş sepeti simgesi uygulanmaktadır.
BadgedBox
yalnızca öğe sayısı 0'dan fazla olduğunda gösterilir.containerColor
vecontentColor
bağımsız değişkenleri, rozetin görünümünü kontrol eder.Badge
içerik alanınınText
composable'ı rozetin içinde görünür. Bu durumda, alışveriş sepetindeki öğelerin sayısı gösterilir.
Bu uygulama aşağıdaki gibi görünür:
