news 2026/7/2 10:18:41

调用OutlinedTextField遇到的问题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
调用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
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/30 6:18:29

牛市三大件 定增, 减持,ipo

你提到的“牛市三大件:定增、减持、IPO”,实际上在当前A股语境中,并非推动牛市的动力,而是被市场广泛视为“抽血三台泵”或“牛市毒瘤”。这一说法源于投资者对A股长期“重融资、轻回报”机制的反思。 下面为你系统梳理这“三大件…

作者头像 李华
网站建设 2026/7/1 5:59:36

新手入门:先学前端还是后端?答案看这篇就够了

对于刚踏入编程领域的新手而言,“先学前端还是后端”是绕不开的核心疑问。两者同属软件开发的核心岗位,却有着截然不同的学习路径、能力要求和应用场景。有人说前端“所见即所得”,容易建立信心;也有人说后端逻辑严谨,…

作者头像 李华
网站建设 2026/6/30 17:02:55

Meta2d.js终极指南:轻松构建专业级2D可视化应用

Meta2d.js终极指南:轻松构建专业级2D可视化应用 【免费下载链接】meta2d.js The meta2d.js is real-time data exchange and interactive web 2D engine. Developers are able to build Web SCADA, IoT, Digital twins and so on. Meta2d.js是一个实时数据响应和交互…

作者头像 李华
网站建设 2026/7/1 20:58:15

直接编译运行C#解析DXF源码:可读取圆、直线、弧、多段线,无封装缩放拖拽,支持多种CAD版本...

可直接编译运行 c#解析dxf可读取圆直线弧多段线源码-无封装缩放拖拽 可读取坐标信息 支持多种版本的CAD 可导出G代码最近在折腾CAD文件解析,发现DXF这东西虽然结构复杂但还挺有意思的。用C#撸了个解析器,能读取圆、直线、弧、多段线这些基础图形&#xf…

作者头像 李华
网站建设 2026/7/2 11:29:01

一篇说明inline函数

一、什么是 inline 函数?(what)inline 的本意:把函数调用“展开”成函数体本身,用来减少函数调用的开销。普通函数int add(int a, int b) {return a b; }int x add(1, 2); // 有一次函数调用inline 函数inline int …

作者头像 李华
网站建设 2026/7/1 18:32:32

好写作AI与学术诚信:论其功能设计如何促进负责任的研究与写作

当AI技术深入学术领域,关于诚信的讨论从未如此重要。真正的智能工具,应当成为学术规范的守护者,而非模糊边界的试探者。好写作AI官方网址:https://www.haoxiezuo.cn/人工智能辅助写作工具的发展,始终伴随着对学术诚信的…

作者头像 李华