news 2026/7/16 20:55:39

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/6/26 1:47:35

单片机毕设易上手任务书100例

【单片机毕业设计项目分享系列】 🔥 这里是DD学长,单片机毕业设计及享100例系列的第一篇,目的是分享高质量的毕设作品给大家。 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的单片机项目缺少创新和亮点…

作者头像 李华
网站建设 2026/7/15 19:49:52

【快速EI检索 | IEEE出版 | 高效出版流程 | 审稿周期短 | 快速录用 | 征稿主题范围广】第二届信号处理、通信与控制系统国际学术会议(SPCCS 2026)

第二届信号处理、通信与控制系统国际学术会议(SPCCS 2026) The 2nd International Conference on Signal Processing, Communication and Control Systems 2026年3月13-15日 | 中国-杭州 大会官网:ic-spccs.com 截稿时间:见官网…

作者头像 李华
网站建设 2026/7/15 13:26:00

数据中台建设中的主数据管理(MDM)实践

友情提示:全文约 1.1 万字,阅读时间 35–45 min。建议先收藏,再跟着代码边做边读。 从零到一:数据中台主数据管理(MDM)落地实践 副标题:用一套可落地的开源技术栈,带你走完“主数据识…

作者头像 李华
网站建设 2026/7/4 11:02:19

Java打造旅行攻略及搭子匹配系统源码

Java旅行攻略及搭子匹配系统源码深度解析(架构功能代码) 一、技术架构:高并发与实时交互的基石 微服务架构设计 Spring Boot 3.0 Spring Cloud Alibaba:构建用户服务、攻略服务、匹配服务、支付服务等独立微服务,通…

作者头像 李华
网站建设 2026/7/12 7:19:09

赋能数据决策!10款好用的BI工具核心能力速览,适配多行业场景

在数据被普遍视为核心资产的时代,企业决策的范式正从“经验驱动”全面转向“数据驱动”。面对市场上琳琅满目的商业智能(BI)工具,决策者往往陷入选择困境:是追求极致的数据可视化效果,还是拥抱强大的AI智能…

作者头像 李华
网站建设 2026/7/16 3:37:36

LLM教程 | 第1讲:RAG原理解读:让检索增强生成不再是黑盒

本文将首先介绍大模型的基础,包括定义、工作原理与挑战,逐步探讨其应用场景与局限性。接着将介绍RAG技术的崛起,分析其如何通过结合外部知识库来增强大模型的能力,并详细阐述RAG的工作流程、核心组件、功能以及主要类型与变体。最…

作者头像 李华