news 2026/4/23 12:05: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/4/17 23:28:52

Multisim仿真电路图实例对SR锁存器工作原理的图解说明

用Multisim“看懂”SR锁存器:从电路搭建到波形分析的完整实践你有没有过这样的经历?翻开数电课本,看到SR锁存器的真值表和逻辑图时总觉得“好像懂了”,可一旦要自己画电路、接线、验证功能,立刻陷入混乱——为什么输出…

作者头像 李华
网站建设 2026/4/15 6:00:53

Babel + Webpack构建中函数扩展的使用技巧

Babel Webpack构建中函数扩展的实战指南:让现代JavaScript真正落地你有没有遇到过这样的场景?刚写完一段优雅的 ES6 函数代码,信心满满地打开 IE11 测试——结果页面直接白屏,控制台报错:SyntaxError: Unexpected tok…

作者头像 李华
网站建设 2026/4/20 5:35:25

YOLOFuse公交车厢突发事件检测:乘客冲突自动报警

YOLOFuse公交车厢突发事件检测:乘客冲突自动报警 在早晚高峰的公交车厢里,拥挤的人群、闷热的空气、突如其来的急刹车——这些都可能成为情绪爆发的导火索。一旦发生乘客之间的肢体冲突或突发跌倒事件,往往因缺乏即时响应而演变为公共安全事件…

作者头像 李华
网站建设 2026/4/17 20:34:43

YOLOFuse洪水淹没范围评估:无人机红外航测

YOLOFuse洪水淹没范围评估:无人机红外航测 在一次城市内涝应急演练中,夜间航拍画面里波光粼粼的水面几乎“吞噬”了所有可见光信息——普通目标检测模型对漂浮的人体热源视而不见,漏检率高达40%。但当切换到融合红外数据的双模态系统时&#…

作者头像 李华
网站建设 2026/4/18 6:46:10

es查询语法图解入门:轻松理解Query与Filter区别

一文搞懂 Elasticsearch 中的 Query 与 Filter:别再傻傻分不清了你有没有过这样的经历?写了个 ES 查询,功能是实现了,但响应慢得像蜗牛。翻遍日志也没报错,最后发现——原来是把本该放进filter的条件塞进了query&#…

作者头像 李华
网站建设 2026/3/28 11:24:00

nmodbus轻松学:图文并茂讲解主从请求响应

用 nmodbus 轻松玩转 Modbus 主从通信:一次讲透请求与响应 你有没有遇到过这样的场景? 调试一个温湿度传感器,明明接线正确、IP也对了,但上位机就是读不到数据;或者写入寄存器后值“错乱”——高位和低位颠倒&#x…

作者头像 李华