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

调用OutlinedTextField遇到的问题

1、问题

使用OutlinedTextField的组件的时候发现问题:
①、OutlinedTextField 设置了最小高度,且contentPadding无法修改,最小高度过高,不符合UI设计,所以通过自定义的方式进行两个参数的问题。
②、使用OutlinedTextField时,发现设置Modifier参数不能使用heightIn设置高度的范围,当trailingIcon结尾图标不为null的时候,value值无法居中,所以通过计算高度的方式进行强制设置高度。

2、解决问题2的实现方式

① 获取每一行中text可见最大的宽度
② 计算输入框中具体值的宽度
③ 获取输入框中一行的高度
④通过计算具体值有多少行来设置OutlinedTextField的高度

3、代码实现:

3.1 计算具体值的文本宽度

/** * 计算文本宽度 */@ComposablefunMeasureTextWidth(text:String,textStyle:TextStyle=LocalTextStyle.current,onWidthMeasured:(Float)->Unit){valtextMeasurer=rememberTextMeasurer()valdensity=LocalDensity.current// 获取当前密度LaunchedEffect(text,textStyle){valtextLayoutResult=textMeasurer.measure(text=AnnotatedString(text),style=textStyle,constraints=Constraints(maxWidth=Int.MAX_VALUE))valwidthInPx=textLayoutResult.size.width.toFloat()valwidthInDp=with(density){widthInPx.toDp()}// 转换为dponWidthMeasured(widthInDp.value)// 返回dp值}}

3.2 获取自定义的宽度和高度,并计算需要的高度

outLineHeight 为OutlinedTextField的高度设置

valvalueWidth=dimensionResource(R.dimen.width_200).valuevalvalueHeight=dimensionResource(R.dimen.outlin_text_height).valuevarvalueIntbyremember{mutableStateOf(1)}if(bean.value.isNotBlank())MeasureTextWidth(text=bean.value,textStyle=textStyle,onWidthMeasured={valueInt=ceil(it/valueWidth).toInt()})valoutLineHeight=(valueHeight*valueInt).dp
http://www.cnnetsun.cn/news/135711.html

相关文章:

  • SHP文件GCJ02转WGS84坐标系系统源码
  • ComfyUI智能字幕生成终极指南:轻松为图片添加精准描述 [特殊字符]
  • ComfyUI智能字幕生成终极指南:3步实现AI自动化图片标注
  • 2025亚马逊运营升级:从短期竞争,转向品牌资产长效经营
  • 【大前端】【iOS】iOS 真实项目可落地目录结构方案
  • “在我电脑上明明是好的”:我用这套云原生工作流,终结了团队内耗
  • 揭秘MCP服务发现:构建智能AI工具生态系统的核心技术
  • 智能笔记管理:如何高效组织你的每日任务与灵感
  • 终极指南:如何快速掌握 My Mind 免费在线思维导图工具
  • Vim插件管理器VAM终极指南:从零开始构建高效开发环境
  • AgentWeb终极指南:Android混合开发的一站式解决方案
  • 事件循环机制
  • TikTok 电商全球新棋局:从野蛮生长到精耕细作,谁能站稳脚跟?
  • 创建Mysql 用户 并赋权
  • 完整指南:如何快速掌握Vue可视化打印解决方案
  • Three-DXF深度解析:在浏览器中实现专业级CAD文件渲染
  • P2MS:比特币的多重签名机制与比特鹰的技术解析
  • 终极AI字幕生成指南:快速掌握智能字幕处理技巧
  • C语言程序设计教学指导:突破误区,设计有效实验项目
  • DirectX 9.0b SDK介绍:核心组件、在游戏中的重要性
  • AgentWeb混合开发终极指南:5步实现原生与Web无缝融合
  • 新手如何挖漏洞?看这一篇足够
  • 001 PyTorch实战:手写数字识别(MNIST)从零开始
  • 基于LCL滤波器的单相逆变器并网控制电路仿真研究:dq坐标系网侧电流闭环控制的实现与验证
  • RAG开发避坑指南:12个常见痛点与解决方案,从入门到精通,收藏这篇就够了!
  • 5分钟搞定Python控制Android设备:py-scrcpy-client实战指南
  • Simple Live:跨平台直播聚合神器,重新定义你的观看方式
  • 谷歌 Gemini 3 内测引爆业内讨论:为AI行业带来了哪些惊人的突破?
  • T型槽铸铁平台:工业基石与现代制造的完美融合
  • 基于Spring Boot的校园部门资料管理系统