为什么可滚动修饰符不滚动视图内容?
Why scrollable modifier doesn't scroll view content?
我正在尝试滚动以在 Column
上工作,其中条目数可能超过 window 的高度。
我目前正在使用 Compose 1.1.0-rc03,目前我只想让它在桌面上运行。
我把问题简化为:
@Composable
fun App() {
val optionsScrollState = rememberScrollState()
Row(modifier = Modifier.fillMaxSize()) {
// Left column
Column(
modifier = Modifier
.scrollable(optionsScrollState, Orientation.Vertical)
.width(240.dp)
.fillMaxHeight()
) {
(1..100).forEach { i -> Text("Row $i") }
}
}
}
但这不会滚动,或者至少不会用鼠标滚轮滚动。也许还有另一种滚动方式对我来说不是很明显。
我该如何进行这项工作?
scrollable
上的文档说我可能必须自己管理状态。那么使用 rememberScrollState()
还不够吗?
我发现了一些关于 禁用 在列上滚动的现有问题,但他们总是在谈论 LazyColumn
我没有在这里使用。
您使用了错误的修饰符。来自 documentation:
The scrollable
modifier differs from the scroll modifiers in that scrollable detects the scroll gestures, but does not offset its contents.
如果您对如何使用 Modifier.scrollable
感兴趣,可以在同一文档章节中找到示例。
您可以改用 Modifier.verticalScroll
,这将为您提供预期的行为。
同时考虑切换到 LazyColumn
,它已经有 built-in 滚动和延迟单元格加载。
我正在尝试滚动以在 Column
上工作,其中条目数可能超过 window 的高度。
我目前正在使用 Compose 1.1.0-rc03,目前我只想让它在桌面上运行。
我把问题简化为:
@Composable
fun App() {
val optionsScrollState = rememberScrollState()
Row(modifier = Modifier.fillMaxSize()) {
// Left column
Column(
modifier = Modifier
.scrollable(optionsScrollState, Orientation.Vertical)
.width(240.dp)
.fillMaxHeight()
) {
(1..100).forEach { i -> Text("Row $i") }
}
}
}
但这不会滚动,或者至少不会用鼠标滚轮滚动。也许还有另一种滚动方式对我来说不是很明显。
我该如何进行这项工作?
scrollable
上的文档说我可能必须自己管理状态。那么使用 rememberScrollState()
还不够吗?
我发现了一些关于 禁用 在列上滚动的现有问题,但他们总是在谈论 LazyColumn
我没有在这里使用。
您使用了错误的修饰符。来自 documentation:
The
scrollable
modifier differs from the scroll modifiers in that scrollable detects the scroll gestures, but does not offset its contents.
如果您对如何使用 Modifier.scrollable
感兴趣,可以在同一文档章节中找到示例。
您可以改用 Modifier.verticalScroll
,这将为您提供预期的行为。
同时考虑切换到 LazyColumn
,它已经有 built-in 滚动和延迟单元格加载。