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)
        )
    }


}

 效果

猜你喜欢

转载自blog.csdn.net/mp624183768/article/details/125362041