是否可以指定重量和最小高度?

时间:2021-04-06 14:39:02

标签: android android-jetpack-compose

我正在尝试创建一个高度至少为 160 dp 的元素,但会在可能的情况下进行缩放以使用所有可用空间。我想这可能比我预期的要困难。

以下内容不起作用,但也许它传达了我想做的事情的想法。

Column(modifier = Modifier.verticalScroll(rememberScrollState()).fillMaxSize) {
    Box(modifier = Modifier.weight(1f).sizeIn(minHeight = 160.dp))
    Box(modifier = Modifier.height(600.dp))
}

当内容不适合屏幕时,我希望内容可以滚动,并且第一个框的高度为 160 dp。如果屏幕超过 760 dp,我希望第一个框尽可能多地填充空间,而不需要滚动。

1 个答案:

答案 0 :(得分:2)

您可以使用BoxWithConstraints根据可用空间定义自己的内容。
类似的东西:

BoxWithConstraints {
    val height = maxHeight
    Column(
        modifier = Modifier
            .background(Color.Red)
            .verticalScroll(state = rememberScrollState(0))
            .fillMaxSize()
    ) {

        val modifierBox1 : Modifier = if (height > 760.dp)
            Modifier.heightIn(height - 600.dp)
        else
            Modifier.heightIn(160.dp)

        Box(
            modifier = modifierBox1
                .fillMaxWidth()
                .background(Color.Blue)
        )
        Box(
            modifier = Modifier
                .height(600.dp)
                .fillMaxWidth()
                .background(Color.Green)
        )
    }
}

enter image description here