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]
}
}
}
这是我完整解决方案的要点,结果如下所示。
THE END
二维码