首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修饰符.weight()未在列中自动设置,无法添加

修饰符.weight()未在列中自动设置,无法添加
EN

Stack Overflow用户
提问于 2021-06-17 02:35:26
回答 1查看 130关注 0票数 1

我对jetpack compose是新手,也有一些使用flutter的经验,所以当我移动到jetpack compose时,它有点类似于flutter声明性UI风格,但我不太理解,就像在flutter中一样,当我想要扩展一些小部件并希望它占用全部可用空间时,我们可以使用Exapanded widget,如果我在列中使用它,它会自动添加1的flex或jetpack compose中的weight,所以我想在jetpack compose中做同样的事情,但它看起来像jetpack列,不能自动将weight添加到它的子项中,而且我也不能在<代码>D5Modifier.weight(1f)。当在列中使用这个Compoasable时,这个Modifier.weight(1f)必须通过参数来设置,我认为这很奇怪。

代码语言:javascript
复制
@Preview(showBackground = true, widthDp = 500, heightDp = 200)
@Composable
fun NetworkCardComposable(modifier: Modifier = Modifier) {
    Card(
        modifier = modifier
            .fillMaxSize(1f)
            .padding(16.dp),
        shape = RoundedCornerShape(16.dp),
        backgroundColor = colorResource(id = R.color.jazz_color_primary)
    ) {
        Row {
            Card(
                modifier = Modifier
                    .weight(2f)
                    .fillMaxSize()
                    .padding(8.dp),
                shape = RoundedCornerShape(16.dp),
            ) {
                Image(
                    modifier = Modifier
                        .padding(8.dp),
                    painter = painterResource(R.drawable.jazz_logo),
                    contentDescription = null,
                )
            }
            Row(
                modifier = Modifier
                    .weight(2f)
                    .fillMaxSize(),
                verticalAlignment = Alignment.CenterVertically,
            ) {
                Text(
                    modifier = Modifier
                        .weight(1f)
                        .fillMaxWidth(),
                    text = "Bundles & Offers",
                    color = Color.White,
                    textAlign = TextAlign.Center,
                    fontSize = MaterialTheme.typography.h5.fontSize,
                )
                Icon(
                    modifier = Modifier.size(56.dp),
                    imageVector = Icons.Default.ChevronRight,
                    tint = Color.White,
                    contentDescription = null,
                )
            }
        }
    }
}

@Preview(showBackground = true, showSystemUi = true)
@Composable
fun networkCard() {
    Column(Modifier.fillMaxSize()) {
        NetworkCardComposable(Modifier.weight(1f))
        NetworkCardComposable(Modifier.weight(1f))
        NetworkCardComposable(Modifier.weight(1f))
        NetworkCardComposable(Modifier.weight(1f))
    }
}

所有人都认为我已经得到了我想要的布局,但如果有任何更好的方法,请回答

EN

回答 1

Stack Overflow用户

发布于 2021-06-21 14:52:49

Jetpack Compose旨在提供对UI的最大控制。因此,默认情况下,像column这样的容器的元素默认包装内容。如果您希望它们占用容器的最大可用空间,正确的方法是使用Modifier.fillMaxSize()

就权重而言,如果在容器中添加多个元素时没有显式指定,则会根据所需的最小维度相应地计算权重(即,再次使用wrapContentSize ())

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68008292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档