尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

【JetCompose】入门教程实战基础案例02之列表项显隐效果

【JetCompose】入门教程实战基础案例02之列表项显隐效果
📅 发布时间:2026/6/19 16:54:54

子组件item预览

dataclassMessage(val author:String,val body:String)@Composable funMessageCard(message:Message,modifier:Modifier){Box(modifier=modifier.background(MaterialTheme.colorScheme.primary,// 全屏宽度shape=MaterialTheme.shapes.medium).fillMaxWidth()){Row(verticalAlignment=Alignment.CenterVertically){Image(painter=painterResource(id=R.drawable.avatar),contentDescription=null,Modifier.padding(all=8.dp).size(40.dp).clip(CircleShape))Column(modifier=Modifier.padding(end=8.dp)){Text(text="Hello ${message.author}",color=MaterialTheme.colorScheme.onPrimary)Text(text=message.body,color=MaterialTheme.colorScheme.onPrimary)}}}}

预览效果

@Preview(name="MessageCardPreview",showBackground=true)@Composable funPreviewMessageCard(){MessageCard(Message("gaofeng","hello world"),modifier=Modifier.padding(all=8.dp))}

子组件改造

描述文字添加背景,圆角

Column(modifier=Modifier.padding(end=8.dp)){Text(text="Hello ${message.author}",color=MaterialTheme.colorScheme.onPrimary)Spacer(modifier=Modifier.height(4.dp))Surface(shape=MaterialTheme.shapes.medium,shadowElevation=1.dp){Text(text=message.body,modifier=Modifier.padding(horizontal=4.dp),)}}

as中预览效果

模拟数据生成列表


Conversation组件

@Composable funConversation(messages:List<Message>){LazyColumn(contentPadding=PaddingValues(0.dp,4.dp),verticalArrangement=Arrangement.spacedBy(4.dp)){items(messages){MessageCard(message=it,modifier=Modifier)}}}@Preview(name="ConversationPreview",showBackground=true)@Composable funPreviewConversation(){Conversation(SampleData.conversationSample)}

模拟数据

importcom.gaofeng.comps.Message/** * SampleData for Jetpack Compose Tutorial */object SampleData{// Sample conversation dataval conversationSample=listOf(Message("Lexi","Test...Test...Test..."),Message("Lexi","""ListofAndroid versions:|AndroidKitKat(API19)|AndroidLollipop(API21)|AndroidMarshmallow(API23)|AndroidNougat(API24)|AndroidOreo(API26)|AndroidPie(API28)|Android10(API29)|Android11(API30)|Android12(API31)""".trim()),Message("Lexi","""Ithink Kotlin is my favorite programming language.|It's so much fun!""".trim()),Message("Lexi","Searching for alternatives to XML layouts..."),Message("Lexi","""Hey,take a look at Jetpack Compose,it's great!|It's the Android's modern toolkitforbuilding nativeUI.|It simplifies and acceleratesUIdevelopment on Android.|Less code,powerful tools,and intuitive Kotlin APIs:)""".trim()),Message("Lexi","It's available from API 21+ :)"),Message("Lexi","Writing Kotlin for UI seems so natural, Compose where have you been all my life?"),Message("Lexi","Android Studio next version's name is Arctic Fox"),Message("Lexi","Android Studio Arctic Fox tooling for Compose is top notch ^_^"),Message("Lexi","I didn't know you can now run the emulator directly from Android Studio"),Message("Lexi","Compose Previews are great to check quickly how a composable layout looks like"),Message("Lexi","Previews are also interactive after enabling the experimental setting"),Message("Lexi","Have you tried writing build.gradle with KTS?"),)}


MessageCard组件核心逻辑

@Composable funMessageCard(message:Message,modifier:Modifier){Box(modifier=modifier.fillMaxWidth().padding(0.dp,8.dp)){Row(verticalAlignment=Alignment.CenterVertically){Image(painter=painterResource(id=R.drawable.avatar),contentDescription=null,Modifier.padding(all=8.dp).size(40.dp).clip(CircleShape))varisExpanded by remember{mutableStateOf(false)}val surfaceColor byanimateColorAsState(if(isExpanded)MaterialTheme.colorScheme.primaryelseMaterialTheme.colorScheme.surface)Column(modifier=Modifier.padding(end=8.dp).clickable{isExpanded=!isExpanded}){Text(text="Hello ${message.author}",color=MaterialTheme.colorScheme.primary)Spacer(modifier=Modifier.height(4.dp))Surface(shape=MaterialTheme.shapes.medium,shadowElevation=1.dp,color=surfaceColor,modifier=Modifier.animateContentSize().padding(1.dp)){Text(text=message.body,modifier=Modifier.padding(horizontal=4.dp),maxLines=if(isExpanded)Int.MAX_VALUEelse1,)}}}}}

Main组件核心逻辑

classMainActivity06:ComponentActivity(){override funonCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)enableEdgeToEdge()setContent{MyJetCompomApp01Theme{Scaffold(modifier=Modifier.fillMaxSize().padding(10.dp)){innerPadding->// com.gaofeng.comps.MessageCard(Message("JetCompose", "Hello world"), modifier = Modifier.padding(innerPadding))Box(modifier=Modifier.fillMaxSize().padding(innerPadding)){com.gaofeng.comps.Conversation(SampleData.conversationSample)}}}}}}

最后实现效果

相关新闻

  • 【毕业设计】基于Springboot的牧场管理系统的设计与实现(源码+文档+远程调试,全bao定制等)
  • 【课程设计/毕业设计】基于springboot的畜牧管理系统的设计与实现 基于Springboot的牧场管理系统的设计与实现【附源码、数据库、万字文档】
  • 2025-12-31

最新新闻

  • 2026年6月青岛黄金奢侈品回收TOP7实力榜单|客观实测无拉踩,本地变现首选直接抄作业 - 薛定谔的梨花猫
  • 2026年6月19日海安大灯改装本地走访记:检测、装配和交车复查先核对哪几项 - Ayu8888
  • 天津手表回收避坑指南:实测5家正规门店,哪家更让人放心? - 名奢变现站
  • 武汉卖金不用出门!上门回收品牌深度测评,合扬无损耗计价登顶榜首 - 奢侈品交易观察员
  • 深入解析MC9S08DE60内存映射与寄存器配置:从原理到实战优化
  • pandas多维聚合生产实践:滚动窗口、分组展开与性能优化

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号