Başka bir composable'daki durumu veya sayısal değeri göstermek üzere küçük bir görsel öğe görüntülemek için rozet kullanın. Rozet kullanabileceğiniz bazı yaygın senaryolar şunlardır:
- Bildirimler: Okunmamış bildirimlerin sayısını uygulama simgesi veya bildirim zilinde görüntüleyin.
- Mesajlar: Bir sohbet uygulamasındaki yeni veya okunmamış mesajları belirtin.
- Durum güncellemeleri: Bir görevin "tamamlandı", "devam ediyor" veya "başarısız" gibi durumunu gösterin.
- Alışveriş sepeti miktarı: Bir kullanıcının alışveriş sepetindeki öğe sayısını gösterir.
- Yeni içerik: Kullanıcıya sunulan yeni içeriği veya özellikleri öne çıkarın.
API yüzeyi
Uygulamanızda rozetleri uygulamak için BadgedBox
composable'ı kullanın. Nihayetinde bir container'dır. Görünümünü şu iki ana parametreyle kontrol edersiniz:
content
:BadgedBox
öğesinin içerdiği composable içerik. GenellikleIcon
.badge
: İçeriğin üzerinde rozet olarak görünen composable. Genellikle özelBadge
composable'dır.
Temel örnek
Bu kod snippet'i, BadgedBox
temel uygulamasını gösterir:
@Composable fun BadgeExample() { BadgedBox( badge = { Badge() } ) { Icon( imageVector = Icons.Filled.Mail, contentDescription = "Email" ) } }
Bu örnekte, sağlanan Icon
composable ile çakışan bir rozet gösterilmektedir. Kodda aşağıdakilere dikkat edin:
BadgedBox
, genel kapsayıcı görevi görür.BadgedBox
öğesininbadge
parametresi için bağımsız değişkenBadge
.Badge
kendi bağımsız değişkeni olmadığından, uygulama varsayılan rozeti (küçük kırmızı bir daire) gösterir.Icon
,BadgedBox
öğesinincontent
parametresinin bağımsız değişkeni olarak kullanılır. Bu, rozetin üzerinde göründüğü simgedir. Bu durumda, bu bir posta simgesidir.
Şu şekilde görünür:
Ayrıntılı örnek
Aşağıdaki snippet, kullanıcı işlemlerine yanıt veren rozette değerleri nasıl görüntüleyebileceğ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 bir alışveriş sepeti simgesi uygulanmıştır.
BadgedBox
yalnızca öğe sayısı 0'ın üzerinde olduğunda görüntülenir.containerColor
vecontentColor
için bağımsız değişkenler, rozetin görünümünü kontrol eder.Badge
içerik alanı için composable (Text
), rozette görünür. Bu örnekte, alışveriş sepetindeki öğelerin sayısı gösterilir.
Bu uygulama aşağıdaki gibi görünür: