android compose BadgedBox 小红点 使用
以下是一些您可能会使用徽章的常见场景:
- 通知:在应用图标或通知铃图标上显示未读通知的数量。
- 消息:指示聊天应用中的新消息或未读消息。
- 状态更新:显示任务的状态,例如"已完成""正在进行"或"失败"。
- 购物车数量:显示用户购物车中的商品数量。
- 新内容:突出显示可供用户使用的新内容或功能。

package com.wn.androidcomposedemo1.basegoogle
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ShoppingCart
import androidx.compose.material3.Badge
import androidx.compose.material3.BadgedBox
import androidx.compose.material3.Button
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.wn.androidcomposedemo1.ui.theme.AndroidComposeDemo1Theme
/**
* Author : wn
* Email : maoning20080808@163.com
* Date : 2026/6/20 10:53
* Description :
*/
class BadgedBoxActivity : ComponentActivity(){
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
AndroidComposeDemo1Theme() {
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
BadgeInteractiveExample()
}
}
}
}
@OptIn(ExperimentalMaterial3Api::class)
@Preview
@Composable
fun BadgeInteractiveExample(){
var itemCount by remember { mutableIntStateOf(0) }
Row() {
//添加左边距
Spacer(modifier = Modifier.width(20.dp))
Column(
verticalArrangement = Arrangement.spacedBy(56.dp),
) {
BadgedBox(
modifier = Modifier.padding(start = 20.dp, top = 20.dp),
badge = {
if (itemCount > 0) {
Badge(
containerColor = Color.Red,
contentColor = Color.White
) {
Text("$itemCount")
}
}
}
) {
Icon(
imageVector = Icons.Filled.ShoppingCart,
contentDescription = "购物车"
)
}
Button(onClick = {
itemCount++
}) {
Text("点击添加小红点")
}
}
}
}
}