バッジを使用して小さな視覚要素を表示し、別のコンポーザブルのステータスや数値を示します。バッジを使用する一般的なシナリオは次のとおりです。
- 通知: 未読の通知の数をアプリアイコンまたは通知ベルに表示します。
- メッセージ: チャット アプリケーション内の新規メッセージまたは未読メッセージを示します。
- ステータスの更新: 「完了」、「進行中」、「失敗」などのタスクのステータスを表示します。
- カートの数量: ユーザーのショッピング カート内のアイテムの数を表示します。
- New content: ユーザーが利用できる新しいコンテンツや機能を紹介します。
API サーフェス
BadgedBox
コンポーザブルを使用して、アプリにバッジを実装します。最終的にはコンテナです。外観は、次の 2 つの主なパラメータで制御します。
content
:BadgedBox
に含まれるコンポーザブルのコンテンツ。通常はIcon
です。badge
: コンテンツ上にバッジとして表示されるコンポーザブル。通常は、専用のBadge
コンポーザブルです。
基本的な例
次のコード スニペットは、BadgedBox
の基本的な実装を示しています。
@Composable fun BadgeExample() { BadgedBox( badge = { Badge() } ) { Icon( imageVector = Icons.Filled.Mail, contentDescription = "Email" ) } }
この例では、指定された Icon
コンポーザブルに重ねてバッジを表示します。コード内の次の点に注意してください。
BadgedBox
はコンテナ全体として機能します。BadgedBox
のbadge
パラメータの引数はBadge
です。Badge
には独自の引数がないため、アプリはデフォルトのバッジ(小さな赤い円)を表示します。Icon
は、BadgedBox
のcontent
パラメータの引数として機能します。これは、バッジが表示されるアイコンです。この場合はメールアイコンです。
次のように表示されます。
詳細な例
次のスニペットは、ユーザーの操作に応じてバッジに値を表示する方法を示しています。
@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") } } }
この例では、ショッピング カート アイコンと、ユーザーのカート内のアイテム数を表示するバッジを実装します。
BadgedBox
は、アイテム数が 0 を超えている場合にのみ表示されます。containerColor
とcontentColor
の引数は、バッジの外観を制御します。Badge
のコンテンツ スロットのText
コンポーザブルがバッジ内に表示されます。この場合は、カート内のアイテム数が表示されています。
これを実装すると次のようになります。