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

Kotlin Compose 底部栏

Android Compose 版本与 Kotlin 版本的兼容问题

Android Compose 版本与 Kotlin 版本的兼容问题