当前位置: 首页 > 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.rkmt.cn/news/122471.html

相关文章:

  • 2025义乌国际物流服务商综合竞争力推荐榜—聚焦美国双清包税与DDP服务,甄选本地可靠合作伙伴 - 呼呼拉呼
  • VC6.0常用快捷键介绍,涵盖编辑、编译、调试等环节
  • 【强烈收藏】大模型应用架构详解:零基础也能掌握的六大层次实战指南
  • Synbo项目重点进展|完成可扩展的流动性市场框架集成设计
  • 详细介绍:Python 编程实战 进阶与职业发展:Web 全栈(Django / FastAPI)
  • StaMPS:从卫星雷达数据提取地面形变信息的专业工具
  • 如何用Kotaemon连接向量数据库并优化检索效率?
  • 【大前端】【Android】获取第三方APK安装信息
  • 【大前端】【iOS】iOS 真实项目可落地目录结构方案
  • Apache FreeMarker在线测试器终极指南:零基础快速上手模板引擎
  • 终极免费用户引导神器:Intro.js 快速上手完整指南
  • 快速上手MFRC522-python:5步实现树莓派RFID读卡功能
  • macOS存储空间不足?3步解锁远程存储新方案
  • RestTemplate 封装 - RestUtils (1)
  • H3C MSR3620-DP系列路由器生产环境配置
  • 恶臭异味检测仪:金叶仪器实现异味精准识别与数据化管理
  • 服务器技术参数怎么写
  • 别花钱找中介,我留学生求职却靠它上岸了!
  • 关键操作:锁相环切换、逆变器控制模式切换
  • 前后端分离短流量数据分析与可视化abo系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程
  • 小团队如何1-2周快速搭建企业级外卖平台?
  • 快速掌握图表定制:新手友好的交互式数据可视化终极指南
  • Unity智能语音交互革命:从技术难题到离线解决方案的探索之旅
  • 踩过坑才懂:前端生成唯一 ID,别用 Date.now ()了!一行代码搞定
  • 用Dify搭建企业级知识库(详细教程)小白到精通,一篇全掌握!
  • 构建敏捷时代的高效能测试团队:理念、架构与实践路径
  • ESD9L5.0ST5G SOD923封装单向低容静电保护器件 DL0501D9 DL0301D9
  • 2025年12月呼和浩特交通事故/婚姻家庭纠纷/民间借贷律师口碑榜单 - 2025年品牌推荐榜
  • 2025十大可下载图片素材网站推荐,找图库素材必看! - 品牌2026
  • vue 甘特图 vxe-gantt table 依赖线的使用,配置连接线