我有下面的代码
LazyColumn(
contentPadding = PaddingValues(all = 64.dp),
verticalArrangement = Arrangement.spacedBy(16.dp),
) {
item {
Box(
modifier = Modifier
.width(200.dp)
.height(200.dp)
.border(BorderStroke(2.dp, Color.Green))
) {
Box(modifier = Modifier
.fillMaxSize()
.sizeIn(100.dp, 200.dp)
.requiredWidthIn(150.dp, 180.dp)
.requiredHeightIn(150.dp, 180.dp)
.border(BorderStroke(3.dp, Color.Red))
)
}
}
}
果然不出所料。
我只是将requiredWidthIn
和requiredHeigthIn
替换为requiredSizeIn
,如下所示。
LazyColumn(
contentPadding = PaddingValues(all = 64.dp),
verticalArrangement = Arrangement.spacedBy(16.dp),
) {
item {
Box(
modifier = Modifier
.width(200.dp)
.height(200.dp)
.border(BorderStroke(2.dp, Color.Green))
) {
Box(modifier = Modifier
.fillMaxSize()
.sizeIn(100.dp, 200.dp)
.requiredSizeIn(150.dp, 180.dp)
.border(BorderStroke(3.dp, Color.Red))
)
}
}
我希望结果是一样的。不知何故,它看起来不同的高度方面。这是为什么呢?
1条答案
按热度按时间qrjkbowd1#
如果查看您正在使用的每个方法的定义,您会看到:
requiredWidthIn(min: Dp, max: Dp)
requiredHeightIn(min: Dp, max: Dp)
requiredSizeIn(minWidth: Dp, minHeight: Dp, maxWidth: Dp, maxHeight: Dp)
所以你的第二个代码片段实际上是说:
这不是一回事-您没有像使用
requiredWidthIn
和requiredHeightIn
时那样声明任何maxWidth
或maxHeight
。这就是为什么你会得到一个不同的结果--当你使用requiredSizeIn
时,你设置的是180.dp
的minHeight
,而当你使用requiredHeightIn
时,你使用的是minHeight
的150.dp
。如果将所有四个参数都声明为
requiredSizeIn
,您将看到相同的结果: