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)

)

}

}

 效果

 

精彩内容

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。