Jetpackcompose中[NestedScrollView+RecyclerView]或[NestedRecyclerView(Recyclerinsideanotherrecycler)的等价物是什么

我想在 Jetpack compose 中创建以下布局。

我试过在一个垂直可滚动的 Box 内创建两个列表,但这是不可能的,因为我收到了这个错误:“java.lang.IllegalStateException:不允许在相同方向的布局中嵌套滚动,如 ScrollableContainer 和 LazyColumn。如果你想添加项目列表之前的标题请查看 LazyColumn 组件,该组件具有 DSL api,允许首先通过 item() 函数添加标题,然后通过 items() 添加项目列表。”

我尝试使用以下代码在父列表中创建两个不同的列表,但这也不起作用。

@Composable
fun MainList() {
    LazyColumn() {
        
        item {
            /* LazyRow code here */
        }
        
        item {
            /* LazyColumn code here */
        }
    }
}

现在我不知道我还能尝试在同一个活动上实现两个列表(一个垂直和一个水平)并保持活动垂直滚动。

回答

我认为最好的选择是,如果LazyVerticalGrid允许对每个项目进行某种扩展逻辑,但看起来尚不支持(beta-03)。

因此,我将在此处LazyColumn为整个列表和LazyRow“我的书”部分使用一个单一的解决方案。

LazyColumn(
    modifier = Modifier.fillMaxSize(),
) {
    // My Books section
    item {
        Column(modifier = Modifier.fillMaxWidth()) {
            Text("My Books")
            LazyRow {
                items(books) { item ->
                    // Each Item
                }
            }
        }

    }
    // Whishlisted Books title
    item {
        Text("Whishlisted Books", style = MaterialTheme.typography.h4)
    }
    // Turning the list in a list of lists of two elements each
    items(wishlisted.windowed(2, 2, true)) { item ->
        Row {
            // Draw item[0]
            // Draw item[1]
        }
    }
}

这是我完整解决方案的要点,结果如下所示。


以上是Jetpackcompose中[NestedScrollView+RecyclerView]或[NestedRecyclerView(Recyclerinsideanotherrecycler)的等价物是什么的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>