列中的填充MaxSize优先级不明确 [英] fillMaxSize priority inside Column unclear

查看:14
本文介绍了列中的填充MaxSize优先级不明确的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要做的是一个固定大小的框,第一个框下面的另一个框将填充剩余的空间。我有以下代码:

Column {
    Box(
        modifier = Modifier
            .background(Color.Red)
            .fillMaxSize()
    )
    Box(
        contentAlignment = Center,
        modifier = Modifier
            .background(Color.Blue)
            .height(50.dp)
            .fillMaxWidth()
    ) {
        Text(
            "hello",
            color = Color.White
        )
    }
}

出于某种原因,底部框的大小是列边界的一半,如果我删除Strong.height(50.dp),它将完全消失。我试过了 用.wrapContentHeight()解决第二个问题,但没有运气--看起来像fillMaxSize(),使它的大小等于Column,这就是为什么它会将底部的一部分向下推。我希望它在计算其他列子大小后填充剩余的大小-我是不是遗漏了什么? 如果我更改框的顺序,它会按预期工作,但我需要底部的框是固定大小的

推荐答案

在这种情况下,应该在视图上使用weight修饰符,而不是fillMaxSize(默认情况下weight已经填充最大大小),这种情况下将在其他视图之后测量:

父级将在测量未加权子元素后划分剩余的垂直空间,并根据该权重进行分配。

Column {
    Box(
        modifier = Modifier
            .background(Color.Red)
            .weight(1f)
    )
    Box(
        contentAlignment = Center,
        modifier = Modifier
            .background(Color.Blue)
            .fillMaxWidth()
    ) {
        Text(
            "hello",
            color = Color.White
        )
    }
}

这篇关于列中的填充MaxSize优先级不明确的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆