Jetpack Compose Desktop: 可滚动的列/懒加载列

3

我正在使用Jetpack Compose Desktop版本1.0.0-beta5创建一个程序,但我无法弄清楚如何使Column/LazyColumn可滚动。同时,我觉得文档中列出的许多Android类都缺失,无法从它们的示例中工作。

val lazyListState = rememberLazyListState()
val scrollState = rememberScrollState()

LazyColumn(
    state = lazyListState,
    modifier = Modifier.verticalScroll(scrollState)
) {
    items(ArrayList<String>()){ item ->
        Column(modifier = Modifier.padding(8.dp)) {
            Text(item)
        }
    }
}

这段代码目前出现了错误。

准确地说,在示例中可以看到使用了空列表,但这只是一个调整,实际上我绘制了很多项目。


我修改了这段代码以显示列表,实际上我在列表上绘制了许多类。 - Honza Rössler
我移除了所有的修饰符和记忆函数,只剩下这个:LazyColumn { items(ArrayList<String>()){ item -> Column(modifier = Modifier.padding(8.dp)) { Text(item) } } }。不幸的是,滚动不起作用。 - Honza Rössler
我滚动了一下文本,但没有任何反应。这就是为什么我决定使用另一只鼠标的原因。它似乎与之很兼容,所以可能是不支持的硬件。 - Honza Rössler
1
您可以将此问题报告给官方GitHub,并附上您的鼠标型号和使用的示例项目。 - Phil Dukhov
你可以尝试使用“ScrollableTabRow”这个组件。虽然不是完美的解决方案,但可能会起作用。 - Linde_98
2个回答

1
你可以像这样实现这个目标:
val scrollState = rememberLazyListState()
val coroutineScope = rememberCoroutineScope()
LazyRow(
    state = scrollState,
        modifier = Modifier
        .draggable(
            orientation = Orientation.Horizontal,
            state = rememberDraggableState { delta ->
                coroutineScope.launch {
                    scrollState.scrollBy(-delta)
                }    
            },
        )
) {
    items(100) {
        Text("Test Test Test Test $it")
    }
}

0

我知道这个问题很老了,但你可以看一下桌面组件

Jetpack Compose是为Android框架设计的, Compose Desktop是Jetpack Compose的一个变体,它在底层使用Skia和Swing。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接