news 2026/2/26 1:01:03

android compose 对话框AlertDialog中软键盘弹出后TextField多个挤压变形

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
android compose 对话框AlertDialog中软键盘弹出后TextField多个挤压变形

让内容可滑动

//关键点 val scrollState = rememberScrollState() AlertDialog( containerColor = DialogBg, modifier = Modifier .widthIn(min = 400.dp) .fillMaxWidth(0.3f) //关键点 .windowInsetsPadding(WindowInsets.safeDrawing), onDismissRequest = { }, properties = DialogProperties( dismissOnBackPress = true, dismissOnClickOutside = true, // usePlatformDefaultWidth = false, // 禁用平台默认宽度,避免尺寸波动 decorFitsSystemWindows = false // 禁用系统窗口适配,减少布局冲突 ), title = { Row(verticalAlignment = Alignment.CenterVertically) { Image( painter = painterResource(R.drawable.warning), contentDescription = "菜单", modifier = Modifier.size(20.dp) ) Spacer(modifier = Modifier.width(8.dp)) Text(text = title, fontSize = 22.sp) } }, text = { //关键点 Column(modifier = Modifier.verticalScroll(scrollState)) { if (!firstPrompt.isBlank()) { CustomOutlinedTextField( label = { Text(firstStrDes) }, value = firstPrompt, singleLine = true, readOnly = true, enabled = false, onValueChange = { }, keyboardOptions = KeyboardOptions( keyboardType = KeyboardType.Text, imeAction = ImeAction.Done ), modifier = Modifier .height(55.dp) .fillMaxWidth(0.95f), contentPadding = PaddingValues(start = 10.dp, end = 2.dp), colors = OutlinedTextFieldDefaults.customColors(), ) Spacer(modifier = Modifier.height(8.dp)) } CustomExposedDropdownMenu( modifier = Modifier .height(55.dp) .fillMaxWidth(0.95f), tempShow, labelStr, selectedOptionText = selectedOptionText ) { result -> selectedOptionTextId.value = result.getShowId() } Spacer(modifier = Modifier.height(8.dp)) CustomOutlinedTextField( label = { Text(textInputDes) }, value = editString.value, singleLine = true, onValueChange = { editString.value = it }, keyboardOptions = KeyboardOptions( keyboardType = KeyboardType.Number, imeAction = ImeAction.Done ), modifier = Modifier .height(55.dp) .fillMaxWidth(0.95f), contentPadding = PaddingValues(start = 10.dp, end = 2.dp), colors = OutlinedTextFieldDefaults.customColors(), ) } }, confirmButton = { TextButton(onClick = { if (editString.value.isEmpty()) { ToastUtil.showToast("请输入${textInputValue}") return@TextButton } // 根据选中的ID找到对应的T对象 val selectedItem = showSelectList.find { it.getShowId() == selectedOptionTextId.value } if (null == selectedItem) { ToastUtil.showToast("请选择$labelStr") return@TextButton } okClick?.invoke(selectedItem, editString.value) dialogState.value = false }) { Text(text = "确认") } }, dismissButton = { TextButton(onClick = { dialogState.value = false }) { Text(text = "取消") } }, )
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/25 22:12:01

YOLOFuse智慧农业大棚监控:作物生长+温度联合分析

YOLOFuse智慧农业大棚监控:作物生长温度联合分析 在现代温室大棚中,一个看似健康、叶片翠绿的番茄植株,可能正经历根部缺氧或早期真菌感染——这些隐患往往在肉眼可见之前,就已通过微弱的热异常暴露了踪迹。传统的视觉监控系统依赖…

作者头像 李华
网站建设 2026/2/24 17:29:30

工业网关中I2C时序与其他协议的协同控制

工业网关中I2C时序的精准控制与多协议协同实战在工业4.0浪潮下,工业网关早已不再是简单的“数据搬运工”。它作为连接现场层设备与云端大脑的关键节点,承担着传感器采集、边缘计算、协议转换和远程通信等复杂任务。而在这其中,看似低调却无处…

作者头像 李华
网站建设 2026/2/23 15:43:49

一文说清Multisim14.0在教学平台中的安装核心要点

Multisim14.0 教学部署实战:避开98%人都踩过的安装坑你有没有遇到过这样的场景?机房里几十台电脑整齐排列,学生坐等上《模拟电子技术》实验课,老师信心满满地打开投影:“今天我们用Multisim仿真三极管放大电路。”结果…

作者头像 李华
网站建设 2026/2/23 22:48:21

YOLOFuse珊瑚礁白化监测:海水温度与图像变化关联

YOLOFuse珊瑚礁白化监测:海水温度与图像变化关联 在热带海域的水下世界,珊瑚礁正悄然“褪色”。这种看似静谧的变化,实则是海洋生态系统发出的紧急求救信号——全球变暖引发的海水升温,正在导致大规模珊瑚白化。传统的监测方式依赖…

作者头像 李华
网站建设 2026/2/14 20:13:43

Vivado卸载完全指南:FPGA开发环境清理步骤详解

彻底清理Vivado开发环境:从卸载失败到零残留的实战指南 你有没有遇到过这种情况?想升级新版Vivado,安装程序刚启动就弹出“Another installation is in progress”;或者明明已经卸载旧版本,重装时却卡在许可证初始化界…

作者头像 李华
网站建设 2026/2/10 5:31:46

Google Cloud Vertex AI的新特性:GenerationConfig的使用

大家好,欢迎来到我的技术博客。在今天的文章中,我们将探讨Google Cloud的Vertex AI服务中一个新的特性——GenerationConfig的使用。通过这个特性,我们能够更精细地控制模型的生成行为,提高生成内容的质量和相关性。 什么是GenerationConfig? GenerationConfig是一个用于…

作者头像 李华