Başka bir composable'da durumu veya sayısal değeri belirtmek için küçük bir görsel öğe göstermek üzere rozet kullanın. Rozet kullanabileceğiniz birkaç yaygın senaryo şunlardır:
- Bildirimler: Bir uygulama simgesinde veya bildirim zilinde okunmamış bildirimlerin sayısını gösterir.
- Mesajlar: 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").
- Alışveriş sepeti miktarı: Kullanıcının alışveriş sepetindeki öğe sayısını gösterir.
- Yeni içerik: Kullanıcıya sunulan 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. Bu reklamın görünümünü şu iki ana parametreyle kontrol edersiniz:
content:BadgedBoxtarafından içerilen birleştirilebilir içerik. GenellikleIcon.badge: İçerik üzerinde rozet olarak görünen composable. Genellikle özelBadgecomposable.
Temel örnek
Bu kod snippet'i, BadgedBox için temel bir uygulamayı 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 şunlara dikkat edin:
BadgedBox, genel kapsayıcı görevi görür.BadgedBoxişlevininbadgeparametresi için bağımsız değişkenBadge.Badgeöğesinin kendi bağımsız değişkenleri olmadığından uygulama, varsayılan rozeti (küçük kırmızı bir daire) gösterir.Icon,BadgedBoxişlevinincontentparametresi için bağımsız değişken olarak kullanılır. Rozetin üzerinde göründüğü simgedir. Bu durumda, posta simgesi gösterilir.
Şu şekilde görünür:
Ayrıntılı örnek
Aşağıdaki snippet, rozette kullanıcı işlemlerine yanıt veren değerleri nasıl gösterebileceğinizi gösterir.
@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") } } }
Bu örnekte, kullanıcının alışveriş sepetindeki ürün sayısını gösteren bir rozet içeren alışveriş sepeti simgesi uygulanmaktadır.
BadgedBoxyalnızca öğe sayısı 0'dan fazla olduğunda gösterilir.containerColorvecontentColorbağımsız değişkenleri, rozetin görünümünü kontrol eder.Badgeiçerik alanınınTextcomposable'ı, rozetin içinde görünür. Bu durumda, alışveriş sepetindeki öğelerin sayısını gösterir.
Bu uygulama aşağıdaki gibi görünür: