2026/3/28 4:13:26
网站建设
项目流程
在那里做网站,做网站运营工作流程,外围网站做代理,php网站建设与管理一、Compose 重组
1、基本介绍重组是 Compose 更新的唯一方式#xff0c;当状态变化时#xff0c;Compose 会重新执行受影响的 Composable 函数#xff0c;生成新的 UI 描述MutableStateT 是一个可观察的状态容器#xff0c;它持有一个值#xff0c;当这个值改变时…一、Compose 重组1、基本介绍重组是 Compose 更新的唯一方式当状态变化时Compose 会重新执行受影响的 Composable 函数生成新的 UI 描述MutableStateT是一个可观察的状态容器它持有一个值当这个值改变时会通知所有订阅它的 Composable 函数进行重组remember 是一个 Composable 函数用于在 Composable 函数重组时记住一个值2、演示1演示 1ComposablefunCounterDemo(){varcountbyremember{mutableStateOf(0)}println(CounterDemo 重组count:$count)Button(onClick{count}){Text(点击了$count次)}}启动应用输出结果如下CounterDemo 重组count: 0点击按钮按钮文本发生变化输出结果如下CounterDemo 重组count: 12演示 2varnum10ComposablefunCounterDemo2(){println(CounterDemo2 重组num:$num)Column{Button(onClick{num}){Text(点击了$num次)}Button(onClick{println([查看] 点击了$num次)}){Text(查看 num)}}}启动应用输出结果如下CounterDemo2 重组num: 10点击第一个按钮按钮文本未发生变化无输出结果点击第二个按钮输出结果如下[查看] 点击了 12 次3演示 3valcount:MutableStateIntmutableStateOf(10)ComposablefunCounterDemo3(){println(CounterDemo3 重组num:${count.value})Column{Button(onClick{count.value}){Text(点击了${count.value}次)}Button(onClick{println([查看] 点击了${count.value}次)}){Text(查看 count)}}}启动应用输出结果如下CounterDemo3 重组num: 10点击第一个按钮按钮文本发生变化输出结果如下CounterDemo3 重组num: 11点击第二个按钮输出结果如下[查看] 点击了 11 次二、AlertDialogvarshowDialogbyremember{mutableStateOf(false)}Button(onClick{showDialogtrue}){Text(显示对话框)}if(showDialog){AlertDialog(onDismissRequest{showDialogfalse},title{Text(确认删除)},text{Text(确定要删除这条记录吗)},confirmButton{Button(onClick{showDialogfalse}){Text(确定)}},dismissButton{Button(onClick{showDialogfalse}){Text(取消)}})}三、LazyColumn1、基本介绍LazyColumn 是 Compose 中用于显示垂直滚动列表的组件它只渲染当前屏幕可见的列表项适用于大量数据列表的显示2、演示LazyColumn 的基本使用valitemslistOf(Item 1,Item 2,Item 3,Item 4,Item 5)LazyColumn{items(items.size){index-Text(textitems[index],modifierModifier.padding(16.dp),fontSize18.sp)}}valdataListlistOf(苹果,香蕉,橙子,葡萄)LazyColumn{itemsIndexed(dataList){index,item-Text(text第${index1}项$item,modifierModifier.padding(16.dp),fontSize18.sp)}}动态数据的 LazyColumnvaldataListremember{mutableStateListOf(苹果,香蕉,橙子,葡萄)}Column{LazyColumn{itemsIndexed(dataList){index,item-Text(text第${index1}项$item,modifierModifier.padding(16.dp),fontSize18.sp)}}Button(onClick{dataList.add(西瓜)}){Text(text添加,fontSize18.sp)}}vardataListbyremember{mutableStateOf(listOf(苹果,香蕉,橙子,葡萄))}Column{LazyColumn{itemsIndexed(dataList){index,item-Text(text第${index1}项$item,modifierModifier.padding(16.dp),fontSize18.sp)}}Button(onClick{dataListdataList西瓜}){Text(text添加,fontSize18.sp)}}LazyColumn 的点击事件valdataListremember{mutableStateListOf(苹果,香蕉,橙子,葡萄)}LazyColumn{itemsIndexed(dataList){index,item-Text(text第${index1}项$item,modifierModifier.padding(16.dp).clickable{dataList.remove(item)},fontSize18.sp)}}带有列表头部的列表valdataListremember{mutableStateListOf(苹果,香蕉,橙子,葡萄)}LazyColumn{item{Text(text列表头部,modifierModifier.padding(16.dp),fontSize20.sp,fontWeightFontWeight.Bold)Divider()}itemsIndexed(dataList){index,item-Text(text第${index1}项$item,modifierModifier.padding(16.dp).clickable{dataList.remove(item)},fontSize18.sp)}}四、Column 与 Row1、基本介绍Column 和 Row 是 Compose 中用于线性排列子组件的核心布局容器本质上是 Android 传统布局中 LinearLayout 的替代Column 用于垂直方向排列子组件即从上到下Row 用于水平方向排列子组件即从左到右2、演示Column 的基本使用Column(modifierModifier.background(Color.LightGray).padding(16.dp)){Text(text第一个垂直子组件,modifierModifier.padding(4.dp))Text(text第二个垂直子组件,modifierModifier.padding(4.dp))Text(text第三个垂直子组件,modifierModifier.padding(4.dp))}Row 的基本使用Row(modifierModifier.background(Color.LightGray).padding(16.dp)){Text(text第一个水平子组件,modifierModifier.padding(4.dp))Text(text第二个水平子组件,modifierModifier.padding(4.dp))Text(text第三个水平子组件,modifierModifier.padding(4.dp))}