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 ana 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 özelBadgecomposable'dır.
Temel örnek
Bu kod snippet'inde BadgedBox'nın temel bir uygulaması gösterilmektedir:
@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
şu noktalara dikkat edin:
BadgedBoxgenel kapsayıcı olarak kullanılır.BadgedBoxişlevininbadgeparametresinin 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,BadgedBoxişlevinincontentparametresinin 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 { 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 sepetindeki öğe 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ı gösterilir.
Bu uygulama aşağıdaki gibi görünür: