Ely*_*lye 1 android android-jetpack-compose android-jetpack-compose-modifier
我有下面的代码
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))
)
}
}
}
Run Code Online (Sandbox Code Playgroud)
结果正如预期的那样。
我刚刚将requiredWidthInand替换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))
)
}
}
Run Code Online (Sandbox Code Playgroud)
我希望结果是一样的。不知何故,它在高度方面看起来有所不同。为什么是这样?
如果您查看正在使用的每种方法的定义,您会看到:
requiredWidthIn(min: Dp, max: Dp)requiredHeightIn(min: Dp, max: Dp)requiredSizeIn(minWidth: Dp, minHeight: Dp, maxWidth: Dp, maxHeight: Dp)所以你的第二个代码片段实际上是这样说的:
Box(modifier = Modifier
.fillMaxSize()
.sizeIn(100.dp, 200.dp)
.requiredSizeIn(
minWidth = 150.dp,
minHeight = 180.dp,
maxWidth = Dp.Unspecified, // The default
maxHeight = Dp.Unspecified, // The default
)
.border(BorderStroke(3.dp, Color.Red))
)
Run Code Online (Sandbox Code Playgroud)
这不是一回事 - 你没有声明任何maxWidth或像使用andmaxHeight时那样。这就是为什么你会得到不同的结果 - 你在使用时设置了a ,而在使用时设置了a 。requiredWidthInrequiredHeightInminHeight180.dprequiredSizeInminHeight150.dprequiredHeightIn
如果将所有四个参数声明为requiredSizeIn:
Box(modifier = Modifier
.fillMaxSize()
.sizeIn(100.dp, 200.dp)
.requiredSizeIn(
minWidth = 150.dp,
minHeight = 150.dp,
maxWidth = 180.dp,
maxHeight = 180.dp
)
.border(BorderStroke(3.dp, Color.Red))
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
119 次 |
| 最近记录: |