gpt4 book ai didi

android - 与 Jetpack Compose 中的 VerticalScroll 结合使用时,fillMaxSize 修饰符不起作用

转载 作者:行者123 更新时间:2023-12-04 23:40:22 31 4
gpt4 key购买 nike

我尝试查找此内容,但找不到任何相关内容。
我想要一个“全尺寸”Column在可垂直滚动的 Box 内这种组合似乎不起作用。当我添加 verticalScroll(rememberScrollState()) Box 的修饰符,它似乎“禁用”了 fillMaxSize() Column 的修饰符
以下代码执行不是 按预期工作:

MyTheme {
Box(
modifier = Modifier
.fillMaxSize()
.border(2.dp, Color.Green) //for visual effect only
.verticalScroll(rememberScrollState())
) {
Column(
modifier = Modifier
.fillMaxSize()
.padding(2.dp)
.border(2.dp, Color.Red) //for visual effect only
) {
//some content
}
}
}
预期结果:两个 BoxColumn (绿色和红色边框)填满整个屏幕。
实际结果: Box填满屏幕,但 Column不填充高度

但是,如果我删除 verticalScroll()来自 Box 的修饰符,我得到了预期的结果:
MyTheme {
Box(
modifier = Modifier
.fillMaxSize()
.border(2.dp, Color.Green) //for visual effect only
//verticalScroll modifier removed
) {
Column(
modifier = Modifier
.fillMaxSize()
.padding(2.dp)
.border(2.dp, Color.Red) //for visual effect only
) {
//some content
}
}
}

最佳答案

verticalScroll包裹内容的高度,可以拉伸(stretch)到很长,所以范围有Constraints.Infinity对于 maxHeight约束。
来自 fillMaxHeight documentation

If the incoming maximum height is Constraints.Infinity this modifier will have no effect.


这就是为什么你需要设置 height明确地。
考虑切换到 LazyColumn (有 fillParentMaxHeight() 用于此确切目的)或 Pager (这是针对这种情况明确提出的)。
此外,作为@AdrianK 指针,使用常规 scrollable你可以用 BoxWithConstraints 包裹你的 View , 并使用 maxHeight设置 height你的看法。
BoxWithConstraints {
Box(
modifier = Modifier
.fillMaxSize()
.border(2.dp, Color.Green)
.verticalScroll(rememberScrollState())
) {
Column {
repeat(2) {
Column(
modifier = Modifier
// fillMaxWidth instead of fillMaxSize
.fillMaxWidth()
// explicit height modifier
.height(this@BoxWithConstraints.maxHeight)
.padding(2.dp)
.border(2.dp, Color.Red)
) {
//some content
}
}
}
}
}
结果:

关于android - 与 Jetpack Compose 中的 VerticalScroll 结合使用时,fillMaxSize 修饰符不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69394543/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com