news 2026/4/18 9:47:38

Android Jetpack Compose - BadgedBox、Card、ModalBottomSheet、Button(5 种类型)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Android Jetpack Compose - BadgedBox、Card、ModalBottomSheet、Button(5 种类型)

一、BadgedBox

1、基本介绍
  • BadgedBox 用于在图标、头像等元素右上角添加小型标志(Badge),常用于显示通知计数、状态提示等
2、演示
Box(modifier=Modifier.fillMaxSize()){BadgedBox(modifier=Modifier.align(Alignment.Center),badge={Badge()}){Icon(imageVector=Icons.Filled.Email,contentDescription="Email")}}
varcountbyremember{mutableIntStateOf(0)}Box(modifier=Modifier.fillMaxSize()){BadgedBox(modifier=Modifier.align(Alignment.Center),badge={Badge(containerColor=Color.Red,contentColor=Color.White){Text("$count")}}){Icon(imageVector=Icons.Filled.Email,contentDescription="Email")}Button(modifier=Modifier.align(Alignment.BottomCenter),onClick={count++}){Text("Add")}}

二、Card

1、基本介绍
  • Card 用于创建有视觉层次的交互式内容块,通过形状和阴影突出内容
2、演示
Card(modifier=Modifier.size(width=240.dp,height=100.dp)){Text("Hello Card")}
Card(modifier=Modifier.size(width=240.dp,height=100.dp),colors=CardDefaults.cardColors(containerColor=MaterialTheme.colorScheme.primary,),){Text("Hello Card")}
Box(modifier=Modifier.fillMaxSize(),contentAlignment=Alignment.Center){Card(modifier=Modifier.size(width=240.dp,height=100.dp),elevation=CardDefaults.elevatedCardElevation(defaultElevation=5.dp,),){Text("Hello Card")}}
Box(modifier=Modifier.fillMaxSize(),contentAlignment=Alignment.Center){Card(modifier=Modifier.size(width=240.dp,height=100.dp),shape=RoundedCornerShape(topStart=16.dp,topEnd=0.dp,bottomEnd=16.dp,bottomStart=0.dp),border=BorderStroke(width=2.dp,color=Color.Blue),){Text("Hello Card")}}
  • Card 中子元素的排列
Card(modifier=Modifier.size(width=240.dp,height=100.dp)){Text("test1",modifier=Modifier.align(Alignment.Start))Text("test2",modifier=Modifier.align(Alignment.CenterHorizontally))Text("test3",modifier=Modifier.align(Alignment.End))}

三、ModalBottomSheet

1、基本介绍
  • ModalBottomSheet 可以创建一个从屏幕底部滑出的对话框,会遮挡下层内容并要求用户交互
2、演示
var showModalBottomSheet by remember { mutableStateOf(false) } val sheetState = rememberModalBottomSheetState() Button(onClick = { showModalBottomSheet = true }) { Text("显示底部页") } if (showModalBottomSheet) { ModalBottomSheet( modifier = Modifier.fillMaxHeight(), // 点击外部触发的回调 onDismissRequest = { showModalBottomSheet = false }, sheetState = sheetState ) { Text("test content") } }
  • 设置跳过部分展开状态
valsheetState=rememberModalBottomSheetState(skipPartiallyExpanded=true)

四、Button

1、基本介绍
  • 按钮有 5 种类型,每种类型都有不同的外观
类型说明
Button主按钮
FilledTonalButton填充色调按钮
OutlinedButton轮廓按钮,没有背景
ElevatedButton凸起按钮,有阴影的按钮
TextButton文本按钮,没有背景和边框
2、演示
val context = LocalContext.current Column(modifier = Modifier.fillMaxSize()) { Button( onClick = { Toast.makeText(context, "Button Clicked", Toast.LENGTH_SHORT).show() } ) { Text("Button") } FilledTonalButton( modifier = Modifier.padding(top = 16.dp), onClick = { Toast.makeText(context, "FilledTonalButton Clicked", Toast.LENGTH_SHORT).show() } ) { Text("FilledTonalButton") } OutlinedButton( modifier = Modifier.padding(top = 16.dp), onClick = { Toast.makeText(context, "OutlinedButton Clicked", Toast.LENGTH_SHORT).show() } ) { Text("OutlinedButton") } ElevatedButton( modifier = Modifier.padding(top = 16.dp), onClick = { Toast.makeText(context, "ElevatedButton Clicked", Toast.LENGTH_SHORT).show() } ) { Text("ElevatedButton") } TextButton( modifier = Modifier.padding(top = 16.dp), onClick = { Toast.makeText(context, "TextButton Clicked", Toast.LENGTH_SHORT).show() } ) { Text("TextButton") } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 13:26:00

day74(2.2)——leetcode面试经典150

208. 实现 Trie (前缀树) 208. 实现Trie&#xff08;前缀树&#xff09; 又是一个自己建类去实现 但是真的挺神奇的 题目&#xff1a; 题解&#xff1a; class TrieNode {Map<Character, TrieNode> children new HashMap<>();boolean isEnd false; // 标记是…

作者头像 李华
网站建设 2026/4/18 5:28:20

论文AIGC检测如何确保符合学校规范

要确保论文AIGC检测符合学校规范&#xff0c;核心是先明确学校AIGC使用与检测规则&#xff0c;再从写作规范、原创把控、检测适配、合规报备四个核心维度落地&#xff0c;以PaperRed作为主要第三方自查工具&#xff0c;规避检测风险&#xff0c;贴合高校学术要求。以下是精简后…

作者头像 李华
网站建设 2026/4/18 3:54:14

企业储能想长期稳定运营:必须补齐这套监控与控制

安科瑞刘鸿鹏 摘要 在电价波动常态化、峰谷价差扩大以及企业“双碳”考核趋严的背景下&#xff0c;企业储能电站从“建设型项目”加速转向“运营型资产”。但在实际落地中&#xff0c;许多储能项目出现“能充能放但不赚钱、能监能看但不智能”的问题&#xff0c;导致收益不稳…

作者头像 李华
网站建设 2026/4/18 8:08:31

教你零成本使用满血 Clawdbot,并手把手带你集成飞书和Telegram

OpenClaw最近热度很高&#xff0c;最早叫做 Clawdbot&#xff0c;后来改名Moltbot&#xff0c;现在叫 OpenClaw 了。 很多人早已用上了&#xff0c;查数据、做调研、写代码&#xff0c;但是还有些朋友想用但是还没体验上。 OpenClaw 能够像人一样操控电脑和浏览器&#xff0c…

作者头像 李华