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)
)
}
}
效果
精彩内容
发表评论