请考虑以下图像:
我有一个Column
,它有一个Image
,还有一个Column
,它有一些Text
元素。我试图做的是让Image
均匀地扩展到可用空间。我就是不能让它工作。
Column(
modifier = Modifier
.fillMaxSize()
.background(Color.Cyan)
.padding(horizontal = 16.dp),
verticalArrangement = Arrangement.SpaceEvenly
) {
Image(
modifier = Modifier.fillMaxWidth(),
painter = painterResource(R.drawable.rocket_boy),
contentDescription = null,
contentScale = ContentScale.Fit
)
Column(
modifier = Modifier.fillMaxWidth(),
horizontalAlignment = Alignment.CenterHorizontally
) {
repeat(20) {
Text(text = "${it}")
}
}
}
我尝试的一件事是将Image
的大小设置为fillMaxSize
,将第二个Column
的weight
设置为1f
,但它没有做任何事情。也许我需要固定第二个Column
的大小?非常感谢任何帮助。
5条答案
按热度按时间pgccezyw1#
您没有在正确的子节点上使用
Modifier.weight
。它应该应用于视图,您需要填充父节点的其余部分。父元素将在测量未加权的子元素后划分剩余的垂直空间,并根据此权重进行分配。
Modifier.weight
的参数为fill
,默认参数为true
。该默认参数的工作原理与Modifier.fillMaxHeight()
相同(在Column
的情况下),如果您不需要填写所有可用的高度,您可以指定false
:jslywgbw2#
您的图像大小似乎小于屏幕最大宽度,因此图像的容器填充宽度,但图像仍然很小,如果您填充图像的高度,它会正确缩放,但图像容器填充列表下方的所有空间。您可以尝试设置和长宽比修改器,以防止容器填充所有可用空间:
gr8qqesn3#
使用
Column
无法使其正常工作,但我成功地使用了ConstraintLayout
和Nestor对aspectRatio
的帮助。但是如果有人认为它仍然可以用
Column
而不是ConstraintLayout
来完成,他可以发布答案,我可能会接受它。qzwqbdag4#
如果我们考虑父
Column
的高度-作为Image
和嵌套Column
的高度之和-可以认为Image
的高度应该等于从父Column
的高度减去嵌套Column
的高度后的高度的余数。fykwrbwg5#
这就是我的工作:
350.dp
(.size(350.dp)
):150.dp
(.size(150.dp)
):