当前位置: 首页 > news >正文

Android Jetpack Compose - Snackbar、Box

Snackbar

1、基本介绍
  1. Snackbar 是一种轻量级反馈机制,它用于提供有关操作或动作的反馈

  2. Snackbar 会在显示几秒后消失,也可以通过用户交互消失,包含一个可选的用户操作

2、基本使用
valscope=rememberCoroutineScope()valsnackbarHostState=remember{SnackbarHostState()}vardescbyremember{mutableStateOf("")}Box(modifier=Modifier.fillMaxSize()){Column(modifier=Modifier.fillMaxSize(),horizontalAlignment=Alignment.CenterHorizontally){Button(onClick={scope.launch{valreuslt=snackbarHostState.showSnackbar(message="这是一条 Snackbar",actionLabel="关闭",duration=SnackbarDuration.Short)when(reuslt){SnackbarResult.ActionPerformed->{desc="Snackbar 手动关闭"}SnackbarResult.Dismissed->{desc="Snackbar 自动关闭"}}}desc="Snackbar 显示"}){Text("显示 Snackbar")}Text(desc)}SnackbarHost(modifier=Modifier.align(Alignment.BottomCenter).padding(16.dp),hostState=snackbarHostState)}

Box

1、基本介绍
@ComposableinlinefunBox(modifier:Modifier=Modifier,contentAlignment:Alignment=Alignment.TopStart,propagateMinConstraints:Boolean=false,content:@ComposableBoxScope.()->Unit)
参数说明
modifier设置基础属性
contentAlignment设置子元素的默认对齐方式
propagateMinConstraints设置是否将最小约束传递给子元素
content主要内容区域
2、基本使用
  1. Box 的基本使用
Box(modifier=Modifier.size(200.dp).background(Color.LightGray)){Text("test1",modifier=Modifier.align(Alignment.BottomStart))Text("test2",modifier=Modifier.align(Alignment.TopEnd))}
Box(modifier=Modifier.fillMaxSize()){Text(text="居中文本",modifier=Modifier.align(Alignment.Center))Button(onClick={},modifier=Modifier.align(Alignment.BottomCenter)){Text("底部按钮")}}
  1. 使用 contentAlignment
Box(modifier=Modifier.size(200.dp).background(Color.LightGray),contentAlignment=Alignment.Center,){Text("test")}
  1. 子元素使用 matchParentSize 函数,填充父元素
Box(modifier=Modifier.size(200.dp)){Box(modifier=Modifier.matchParentSize().background(Color.Red.copy(alpha=0.3f)))Text("test",modifier=Modifier.align(Alignment.Center))}
3、使用 propagateMinConstraints
  1. 外部灰色 Box 的最小约束不会传递给子元素,导致内部红色 Box 尺寸为 0dp,外部灰色 Box 受尺寸范围与内部红色 Box 尺寸影响,尺寸为 100dp
Box(modifier=Modifier.background(Color.LightGray).widthIn(min=100.dp,max=300.dp).heightIn(min=100.dp,max=300.dp)){Box(modifier=Modifier.background(Color.Red.copy(alpha=0.3f)))}
  1. 外部灰色 Box 的最小约束会传递给子元素,导致内部红色 Box 尺寸为 100dp,外部灰色 Box 受尺寸范围与内部红色 Box 尺寸影响,尺寸为 100dp
Box(modifier=Modifier.background(Color.LightGray).widthIn(min=100.dp,max=300.dp).heightIn(min=100.dp,max=300.dp),propagateMinConstraints=true){Box(modifier=Modifier.background(Color.Red.copy(alpha=0.3f)))}
  1. 外部灰色 Box 的最小约束会传递给子元素,内部红色 Box 自定义尺寸为 150dp,外部灰色 Box 受尺寸范围与内部红色 Box 尺寸影响,尺寸为 150dp
Box(modifier=Modifier.background(Color.LightGray).widthIn(min=100.dp,max=300.dp).heightIn(min=100.dp,max=300.dp),propagateMinConstraints=true){Box(modifier=Modifier.size(150.dp).background(Color.Red.copy(alpha=0.3f)))}
4、子元素层级
  1. 后声明的子元素绘制在先声明的子元素之上
Box(modifier=Modifier.size(200.dp).background(Color.LightGray),){Box(modifier=Modifier.size(150.dp).background(Color.Red).align(Alignment.TopStart))Box(modifier=Modifier.size(150.dp).background(Color.Green).align(Alignment.Center))}
  1. 可以使用 zIndex 控制层级,zIndex 值越大,层级越高
Box(modifier=Modifier.size(200.dp).background(Color.LightGray).zIndex(1f),){Box(modifier=Modifier.size(150.dp).background(Color.Red).align(Alignment.TopStart).zIndex(3f))Box(modifier=Modifier.size(150.dp).background(Color.Green).align(Alignment.Center).zIndex(2f))}
http://www.jsqmd.com/news/222491/

相关文章:

  • 从零实现稳定USB3.0传输速度:回波损耗控制教程
  • 推荐系统用户画像构建:零基础入门教程
  • SSM校园生活互助平台06qe4(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
  • 跨平台cp2102usb to uart bridge驱动兼容性实战分析
  • 2025年大模型盘点:从零基础到精通,收藏这一篇就够了!
  • Kotlin 面向对象 - 装箱与拆箱
  • 快速理解频率响应验证原理:扫频与阶跃激励对比
  • AI Agent 架构核心:如何构建多意图路由与动态查询分发引擎
  • AUTOSAR网络管理与UDS诊断联动设计示例
  • 新手必看:用万用表区分贴片LED灯正负极
  • 吐血整理,常见性能测试缺陷+基准测试分析,一篇通透...
  • 上位机是什么意思?了解其在工业控制中的用途
  • 架构之最终一致性
  • Leetcode 99 删除排序链表中的重复元素 | 合并两个链表
  • 基于IAR的PLC编程:完整指南
  • display driver uninstaller 结合 DDU 模式进行安全卸载示例
  • 一文说清TC3中I2C中断的工作原理
  • 从零实现Multisim正确安装避免数据库丢失
  • 书籍-E.A.韦斯特马克《人类婚姻史》
  • 基于硬件ID定位未知usb设备(设备描述)的实践方法
  • 计算机毕业设计springboot考试管理系统 基于Spring Boot框架的高校考试管理平台设计与实现 Spring Boot驱动的在线考试管理系统开发与应用
  • USB3.0硬件握手协议时序分析:深度剖析D+ D-信号
  • 招聘领域的静默革命:AI重构人才选拔的底层逻辑
  • obsidian_url_clipper插件介绍
  • libwebkit2gtk-4.1-0安装常见问题深度剖析与解决方案
  • 基于vtkPolyData的法向量可视化
  • LVGL内存管理入门:了解堆与动态分配策略
  • 计算机毕业设计springboot牙科诊所管理系统 基于Spring Boot的牙科诊所信息化管理系统设计与实现 Spring Boot框架下的牙科诊所管理平台开发研究
  • 2015年最终终极版诞生~~新手操作一天6000元不是梦
  • 快速理解Elasticsearch基本用法中的全文检索机制