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

Android Jetpack Compose - 修饰符顺序的影响、Divider(分隔线)、DropdownMenu(下拉菜单)、NavigationBar(导航栏)

一、修饰符顺序的影响

  1. 红色背景区域:200 - 50 * 2 = 100 * 100 dp,点击区域:200 - 50 * 2 = 100 * 100 dp
valcontext=LocalContext.currentBox(Modifier.size(200.dp).padding(50.dp).background(Color.Red).clickable{Toast.makeText(context,"触发了点击事件",Toast.LENGTH_SHORT).show()}){}
  1. 红色背景区域:200 * 200 dp,点击区域:200 * 200 dp
valcontext=LocalContext.currentBox(Modifier.size(200.dp).background(Color.Red).clickable{Toast.makeText(context,"触发了点击事件",Toast.LENGTH_SHORT).show()}.padding(50.dp)){}

二、Divider(分隔线)

1、HorizontalDivider
Column(modifier=Modifier.fillMaxSize(),horizontalAlignment=Alignment.CenterHorizontally,verticalArrangement=Arrangement.spacedBy(8.dp)){Text("test content 1")HorizontalDivider(thickness=2.dp)Text("test content 2")}
2、VerticalDivider
Row(modifier=Modifier.fillMaxSize(),verticalAlignment=Alignment.CenterVertically,horizontalArrangement=Arrangement.spacedBy(8.dp)){Text("test content 1")VerticalDivider(thickness=2.dp)Text("test content 2")}

三、DropdownMenu(下拉菜单)

  1. 使用 DropdownMenu、DropdownMenuItem、IconButton 组件实现自定义下拉菜单

  2. DropdownMenu 和 DropdownMenuItem 组件用于显示菜单项

  3. IconButton 是显示或隐藏下拉菜单的触发器

varexpandedbyremember{mutableStateOf(false)}Box(modifier=Modifier.padding(16.dp)){IconButton(onClick={expanded=!expanded}){Icon(Icons.Default.MoreVert,contentDescription="MoreVert")}DropdownMenu(expanded=expanded,onDismissRequest={expanded=false}){DropdownMenuItem(text={Text("选项 1")},onClick={})DropdownMenuItem(text={Text("选项 2")},onClick={})}}
  • DropdownMenu 默认可滚动
var expanded by remember { mutableStateOf(false) } val menuItemData = List(100) { "选项 ${it + 1}" } Box( modifier = Modifier.padding(16.dp) ) { IconButton( onClick = { expanded = !expanded } ) { Icon(Icons.Default.MoreVert, contentDescription = "MoreVert") } DropdownMenu( expanded = expanded, onDismissRequest = { expanded = false } ) { menuItemData.forEach { DropdownMenuItem( text = { Text(it) }, onClick = { } ) } } }

四、NavigationBar(导航栏)

NavigationBar{NavigationBarItem(icon={Icon(Icons.Filled.Home,contentDescription=null)},label={Text("Home")},selected=true,onClick={})NavigationBarItem(icon={Icon(Icons.Filled.Call,contentDescription=null)},label={Text("Call")},selected=false,onClick={})NavigationBarItem(icon={Icon(Icons.Filled.Email,contentDescription=null)},label={Text("Email")},selected=false,onClick={})NavigationBarItem(icon={Icon(Icons.Filled.Person,contentDescription=null)},label={Text("Person")},selected=false,onClick={})}
varselectedItemIndexbyremember{mutableStateOf(0)}Column(modifier=Modifier.fillMaxSize()){Column(modifier=Modifier.fillMaxWidth().weight(1f),verticalArrangement=Arrangement.Center,horizontalAlignment=Alignment.CenterHorizontally){Text("test content")}NavigationBar{NavigationBarItem(icon={Icon(Icons.Filled.Home,contentDescription=null)},label={Text("Home")},selected=selectedItemIndex==0,onClick={selectedItemIndex=0})NavigationBarItem(icon={Icon(Icons.Filled.Call,contentDescription=null)},label={Text("Call")},selected=selectedItemIndex==1,onClick={selectedItemIndex=1})NavigationBarItem(icon={Icon(Icons.Filled.Email,contentDescription=null)},label={Text("Email")},selected=selectedItemIndex==2,onClick={selectedItemIndex=2})NavigationBarItem(icon={Icon(Icons.Filled.Person,contentDescription=null)},label={Text("Person")},selected=selectedItemIndex==3,onClick={selectedItemIndex=3})}}
varselectedItemIndexbyremember{mutableStateOf(0)}Scaffold(topBar={TopAppBar(colors=topAppBarColors(containerColor=MaterialTheme.colorScheme.primaryContainer,titleContentColor=MaterialTheme.colorScheme.primary,),title={Text("顶部应用栏")})},bottomBar={NavigationBar{NavigationBarItem(icon={Icon(Icons.Filled.Home,contentDescription=null)},label={Text("Home")},selected=selectedItemIndex==0,onClick={selectedItemIndex=0})NavigationBarItem(icon={Icon(Icons.Filled.Call,contentDescription=null)},label={Text("Call")},selected=selectedItemIndex==1,onClick={selectedItemIndex=1})NavigationBarItem(icon={Icon(Icons.Filled.Email,contentDescription=null)},label={Text("Email")},selected=selectedItemIndex==2,onClick={selectedItemIndex=2})NavigationBarItem(icon={Icon(Icons.Filled.Person,contentDescription=null)},label={Text("Person")},selected=selectedItemIndex==3,onClick={selectedItemIndex=3})}}){innerPadding->Column(modifier=Modifier.fillMaxSize().padding(innerPadding),verticalArrangement=Arrangement.Center,horizontalAlignment=Alignment.CenterHorizontally){Text("内容区域")}}
http://www.jsqmd.com/news/616459/

相关文章:

  • OpenClaw+千问3.5-9B组合优势:3个本地化AI助手典型案例
  • 伏羲模型在能源行业的应用:风电与光伏发电功率预测实战
  • 无网环境部署:OpenClaw离线使用Qwen3-4B-Thinking模型技巧
  • AcousticSense AI零基础部署教程:5分钟搭建音乐流派识别工作站
  • 2026新疆婚纱摄影工作室评测:性价比之选推荐,靠谱的婚纱摄影推荐口碑分析精选实力品牌 - 品牌推荐师
  • 2026年知名的硼硅玻璃管/泰兴硼硅玻璃管/高硼硅玻璃管/泰兴玻璃管高口碑品牌推荐 - 行业平台推荐
  • 千问3.5-9B在时序预测中的应用:LSTM模型原理与代码解读
  • Phi-4-mini-reasoning Chainlit插件市场:分享常用工具与Prompt模板
  • 13.1软件架构概述-构件技术
  • Windows下OpenClaw安装详解:千问3.5-35B-A3B-FP8多模态助手配置
  • 2026年4月蔬菜网眼袋直销厂家推荐,椰枣网眼袋/网袋/网眼袋/蔬菜网眼袋/洋葱网袋/洋葱网眼袋,蔬菜网眼袋实力厂家推荐 - 品牌推荐师
  • STM32串口通信实战与优化技巧
  • BQ4050智能电量计芯片与Arduino电池监控实战
  • 24-260409 AI 科技日报 (Gemma 4发布一周下载破千万,开源模型生态加速演进)
  • 不会提问就会处处碰壁啊
  • 开源模型实战教程:Pixel Language Portal在开发者文档本地化中的应用
  • OpenClaw+千问3.5-9B:自动化周报生成与邮件发送
  • GraalVM Native Image内存优化全链路拆解(类加载→元空间→堆外缓存→JNI映射),一线大厂SRE团队内部培训材料首次公开
  • mac 快捷键修改
  • 2026年天然木蜡油订做厂家排行榜揭晓,谁能拔得头筹?
  • -别给自己制造麻烦-和-关你啥事-
  • OpenClaw监控告警系统:Qwen3-14B分析服务器日志实践
  • 工艺液体管道:从介质特性到安装验收,工业流体管道项目要点
  • HY-Motion 1.0惊艳效果:Diffusion Transformer生成动作细节放大图
  • 2026年靠谱的锅炉养护剂/青岛锅炉养护剂多家厂家对比分析 - 行业平台推荐
  • 作业2:6位数码管静动态显示
  • mac 右键快速新建文件
  • 2026年热门的锅炉水节能剂/锅炉给水除氧剂精选厂家推荐 - 行业平台推荐
  • 鸡翅Club项目学习文档 - 第一部分
  • OpenClaw年终总结:我的Qwen3-32B自动化效率提升报告