【Jetpack Compose基础语法学与练】第11课 Card卡片、Checkbox复选框,多表单元素组合实战

发布时间:2026/10/9 10:11:06

【Jetpack Compose基础语法学与练】第11课 Card卡片、Checkbox复选框,多表单元素组合实战 前言本节课学习 Card 卡片容器与 Checkbox 复选框并且把前面学过的状态、Column‑Row布局、Modifier修饰器结合完成一个简易多选项表单实战。知识点清单Card卡片容器圆角、阴影用来包裹一组相关内容Checkbox复选框布尔状态Checkbox Text 组合实现可点击选项多个表单状态同时维护页面组合实战完整示例源码ComposablefunCardCheckboxFormDemo(){// 维护3个复选框的状态varagreeReadbyremember{mutableStateOf(false)}varsubscribeNewsbyremember{mutableStateOf(false)}varacceptPushbyremember{mutableStateOf(false)}Column(modifierModifier.fillMaxSize().padding(24.dp),verticalArrangementArrangement.spacedBy(16.dp)){// Card卡片容器Card(modifierModifier.fillMaxWidth(),elevationCardDefaults.cardElevation(defaultElevation6.dp),shapeRoundedCornerShape(12.dp)){Column(modifierModifier.padding(18.dp),verticalArrangementArrangement.spacedBy(12.dp)){Text(text用户设置,fontSize20.sp,fontWeightFontWeight.Bold)// 复选框1Row(verticalAlignmentAlignment.CenterVertically){Checkbox(checkedagreeRead,onCheckedChange{agreeReadit})Text(text我已阅读用户协议)}// 复选框2Row(verticalAlignmentAlignment.CenterVertically){Checkbox(checkedsubscribeNews,onCheckedChange{subscribeNewsit})Text(text订阅产品资讯)}// 复选框3Row(verticalAlignmentAlignment.CenterVertically){Checkbox(checkedacceptPush,onCheckedChange{acceptPushit})Text(text允许消息推送)}}}// 底部显示当前选择结果Text(text已选协议:$agreeRead资讯:$subscribeNews推送:$acceptPush,modifierModifier.padding(top8.dp))}}逐行解读CardCard 是一个带有阴影和圆角的容器组件CardDefaults.cardElevation() 设置阴影高度shape RoundedCornerShape(12.dp) 设置卡片圆角Card内部放置Column把标题和多行复选框全部包裹视觉上形成一块独立面板。Checkbox复选框checked 布尔值受控状态onCheckedChange 点击回调接收 Boolean Checkbox本身不带文字所以必须搭配Row Text组成一行选项。多状态维护这里声明了3个 remember { mutableStateOf(false) } 独立状态变量。要点表单里面每一个复选框各自拥有一份布尔状态修改任意一个状态整个可组合函数会重组刷新页面底部的结果文本自动更新。Row布局 verticalAlignment Alignment.CenterVertically让复选框和文字垂直居中对齐避免文字偏高或者偏低。容易踩坑❌ 不要直接给Text写点击忘记同步Checkbox状态应当优先使用 onCheckedChange 回调。❌ Card内部不要忘记padding否则内容紧贴卡片边缘很难看。✅ 多个表单控件每一个控件维护自己的状态后期复杂表单可以封装数据类统一保存表单数据。多元化习题每道题后紧跟答案解读习题1【基础‑改错题】题目下面这段Card代码存在视觉缺陷请找出问题并且修正。Card(modifierModifier.fillMaxWidth(),elevationCardDefaults.cardElevation(defaultElevation4.dp)){Text(测试卡片内容)}答案Card(modifierModifier.fillMaxWidth(),elevationCardDefaults.cardElevation(defaultElevation4.dp)){Text(测试卡片内容,modifierModifier.padding(16.dp))}解读Card本身不会提供内边距。原代码文字紧贴卡片边框观感很差需要手动给内部元素增加 padding 内边距。习题2【基础‑代码修改题】题目基于课程示例把卡片圆角修改为20.dp卡片阴影修改为3dp。答案Card(modifierModifier.fillMaxWidth(),elevationCardDefaults.cardElevation(defaultElevation3.dp),shapeRoundedCornerShape(20.dp))解读elevation 控制阴影 shape RoundedCornerShape 专门控制卡片圆角两个参数互不影响可以独立调整。习题3【进阶‑补充代码题】题目在原有表单基础之上新增第4条复选框选项“接受收集匿名统计数据”同时底部结果文本同步展示该选项状态。答案先新增状态变量varacceptAnalyticsbyremember{mutableStateOf(false)}增加Row行UIRow(verticalAlignmentAlignment.CenterVertically){Checkbox(checkedacceptAnalytics,onCheckedChange{acceptAnalyticsit})Text(text接受收集匿名统计数据)}修改底部显示文本Text(text已选协议:$agreeRead资讯:$subscribeNews推送:$acceptPush统计:$acceptAnalytics)解读新增表单选项就要新增一条remember状态Compose依靠状态驱动UI状态值改变之后底部文本会自动重组刷新不需要手动赋值更新控件。习题4【综合‑逻辑应用题】题目业务逻辑约束只有勾选“我已阅读用户协议”之后其余复选框才可以点击协议未勾选剩下复选框处于禁用灰色不可选状态。 写出关键Checkbox代码。答案Row(verticalAlignmentAlignment.CenterVertically){Checkbox(checkedsubscribeNews,onCheckedChange{subscribeNewsit},enabledagreeRead)Text(text订阅产品资讯)}Row(verticalAlignmentAlignment.CenterVertically){Checkbox(checkedacceptPush,onCheckedChange{acceptPushit},enabledagreeRead)Text(text允许消息推送)}解读enabled 属性用来控制组件是否可用这里直接绑定布尔状态 agreeRead 。当协议复选框取消勾选时enabledfalse复选框置灰用户无法点击不需要额外写if‑else判断分支。习题5【概念简答题】题目为什么Checkbox组件旁边的文字不能直接写在Checkbox内部答案Checkbox只绘制勾选方框没有内置文本参数官方设计意图就是使用Row横向布局一边放Checkbox一边放Text。解读这样拆分组件更加灵活文字可以自定义字号、颜色如果框架内部写死文字反而限制自定义表单样式。本节课知识点总结Card是带阴影、圆角的面板容器Card不会自带内边距内部内容务必补充padding。Checkbox仅渲染勾选方框表单选项一般使用RowCheckboxText组合一行。Checkbox三个核心属性 checked 受控布尔状态 onCheckedChange 点击回调 enabled 控制是否禁用。多表单场景下每一个选项维护独立remember状态状态发生变化触发重组界面自动刷新。可以直接把状态变量赋值给enabled属性简单实现表单联动禁用逻辑。下一课预告第12课 Button、OutlinedButton、TextButton三种按钮点击事件实战。
延伸阅读

更多相关文章

2026/10/9 11:06:27

清理大师的完整思路:深层垃圾定位与持久优化实战

说到“清理大师”,我第一反应是前阵子帮一个朋友处理他卡到怀疑人生的旧手机。那台机子用了快三年,打开微信要转三四秒圈圈,相册滑一滑就掉帧,64G的存储常年飘红。我花了大概一个晚上,没有刷机,没有恢复出厂…

2026/10/9 11:06:27

JavaWeb期末大作业:二手闲置交易系统设计与实现全解析

简介:这是一套面向JavaWeb期末大作业与课程设计的二手闲置物品交易系统完整源码,适合高校计算机相关专业学生参考与二次开发。平台围绕闲置物品的发布、浏览、交易与个人管理等核心场景展开,代码包含用户、商品、订单、留言等模块&#xff0c…

2026/10/9 11:06:27

医疗KBQA问答系统从零搭建:21万实体关系与朴素贝叶斯的闭环实践

简介:面向希望入门知识图谱问答的开发者,整套资源从零搭建了一个医疗领域KBQA问答系统,覆盖7类实体、约3.7万实体与21万实体关系,可完整体验意图识别、实体抽取、图谱构建和答案检索等核心流程,适合作为学习或演示项目…

2026/10/9 11:01:26

求解器并发架构:进程与线程的边界与协同

很多跑算法或做工程的同学,嘴上挂着“并发”和“多线程”,一到真正碰求解器这类计算密集型任务,就翻车。要么内存爆炸,要么直接死锁卡死,要么 CPU 都跑满了但业务吞吐量上不去。这些问题的根源,往往不是数学…

2026/10/8 10:03:18

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/8 10:03:20

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/8 6:05:44

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 0:04:27

毕业论文初稿完成后首次进行AIGC疑似度自查的摸底与分流策略

毕业论文初稿完成后首次进行AIGC疑似度自查的摸底与分流策略当数万字的学位论文初稿经历开题、实验、问卷与多轮文献梳理最终成形时,绝大多数研究生都会面临一道全新的形式审查关卡:AIGC 疑似度排查。在高校毕业审核流程中,盲审前的文本检测通…

2026/10/9 0:04:27

食堂节能改造源头工厂,商用厨房设备焕新方案广受好评

商用厨房作为餐饮经营、单位供餐的核心后勤阵地,其设备配置、动线规划与运维体系直接决定后厨作业效率、运营成本与合规性。从基础的灶具、制冷存储设备,到油烟净化、水处理等配套系统,每一个环节的合理性都与食品安全、能耗管控、消防安全挂…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑