父可组合项的高度是如何根据其中的特定子可组合项确定的?

问题描述 投票:0回答:1

行内有一个列和一个可组合的图像。我希望行的高度仅由列的可变高度决定。我希望图像的高度是固定的,并且不影响行的高度。我怎样才能实现这个目标?

@Composable
fun RowWithColumnAndImage(
    modifier: Modifier = Modifier,
    image: Painter,
    text1: String,
    text2: String
) {
    Row(
        modifier = modifier.fillMaxWidth(),
        verticalAlignment = Alignment.CenterVertically
    ) {
        Column(
            modifier = Modifier.weight(1f)
        ) {
            Text(
                text = text1,
                modifier = Modifier.fillMaxWidth(),
                textAlign = TextAlign.Center
            )
            Text(
                text = text2,
                modifier = Modifier.fillMaxWidth(),
                textAlign = TextAlign.Center
            )
        }
        Image(
            painter = image,
            contentDescription = null,
            modifier = Modifier.size(64.dp)
        )
    }
}

我尝试为图像和列可组合项提供权重(1f)修饰符。有点有效,但它会影响宽度。我想要一个仅影响高度的解决方案

Visual explanation

android kotlin mobile android-jetpack-compose
1个回答
0
投票

既然还没人回答,我就试一试。
您基本上是同时提出两个要求:

我希望行的高度仅由列的可变高度确定。

要让父可组合项与子可组合项高度相同,您可以将

wrapContentHeight()
修饰符设置到父可组合项上。

我希望图像的高度固定并且不影响行的高度。

如果您已在父级上设置

wrapContentHeight()
来满足您的第一个要求,则第二个要求是不可能的。父可组合项的级别将与其子项中较高级别的可组合项一样高。如果图像高于列,则行将与图像一样高。

因此,您提出了两个相互矛盾的要求。我的问题是:

  • 为什么要让行与列的高度相同?

一旦您弄清楚了这一点,我们将能够为您提供进一步的帮助。

© www.soinside.com 2019 - 2024. All rights reserved.