为什么可滚动修饰符不滚动视图内容?

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 滚动和延迟单元格加载。