Kotlin Compose Intrinsics 获取控件的高度
Posted 安果移不动
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kotlin Compose Intrinsics 获取控件的高度相关的知识,希望对你有一定的参考价值。
Compose只测量元素一次,测量两次会引发运行时异常。
但是,是有测量子子元素之前,我们需要一些有关子元素的信息
Intrinsics允许在实际测量之前查询子项
(min/max)IntrinsicWidth :鉴于此高度,您可以正确绘制内容最小/最大宽度是多少
(min/max)IntrinsicHeight:鉴于此宽度,您可以正确绘制内容的最小/最大高度是多少。
package com.anguomob.jecpack.activity.compose.layout
import androidx.compose.foundation.layout.*
import androidx.compose.material.Divider
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
@Composable
fun TwoTests(modifier: Modifier = Modifier)
Row(modifier = Modifier)
Text(
text = "Hi",
modifier = Modifier
.weight(1f)
.padding(4.dp)
.wrapContentWidth(Alignment.Start)
)
Divider(color = Color.Black, modifier = Modifier.fillMaxHeight().width(1.dp))
Text(
text = "there",
modifier = Modifier
.weight(1f)
.padding(4.dp)
.wrapContentWidth(Alignment.End)
)
效果
我们想根据text的高度来进行测量呢?
修改代码
@Composable
fun TwoTests(modifier: Modifier = Modifier)
Row(modifier = modifier.height(IntrinsicSize.Min))
Text(
text = "Hi",
modifier = Modifier
.weight(1f)
.padding(4.dp)
.wrapContentWidth(Alignment.Start)
)
Divider(color = Color.Black, modifier = Modifier.fillMaxHeight().width(1.dp))
Text(
text = "there",
modifier = Modifier
.weight(1f)
.padding(4.dp)
.wrapContentWidth(Alignment.End)
)
效果
开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系
以上是关于Kotlin Compose Intrinsics 获取控件的高度的主要内容,如果未能解决你的问题,请参考以下文章
java.lang.IllegalArgumentException:指定为非空的参数为空:方法 kotlin.jvm.internal.Intrinsics.checkParameterIsNotN
n-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter convertView
n-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter convertView