当前位置: 首页 > 知识库问答 >
问题:

Jetpack在LazyColumn内编写lazy column

夏才
2023-03-14

在我的主页上,我有一个懒散的专栏,其中一个项目是水平寻呼机。在每个水平寻呼机中都有一些页面,我也需要在其中设置懒散栏。错误是不允许在同一方向上使用嵌套滚动。我应该如何实现这个ui?

@Composable
fun Home() {
    LazyColumn {
        item { }
        item { }
        item { }

        item {
            TabRow(selectedTabIndex =) {

            }
        }
        item {
            HorizontalPager(count =) { page ->
                
                when {
                    page == 0 -> {
                        LazyColumn {
                            items(list) {
                                
                            }
                        }
                        
                    }
                }
            }
        }
    }
}

共有1个答案

乐正远
2023-03-14

我创建了一个例子。对我来说,它的工作如预期。请看一看

class ComposeActivity8 : ComponentActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            ComposeTutorialTheme {
                Home()
            }
        }
    }

    @Composable
    fun VItem(text: String) {
        Text(modifier = Modifier.padding(40.dp), text = text)
        Divider(color = Color.Black)
    }

    @Composable
    fun HItem(content: @Composable BoxScope.() -> Unit) {
        Box {
            content()
            Divider(
                color = Color.Red, modifier = Modifier
                    .align(Alignment.CenterEnd)
                    .fillMaxHeight()
                    .width(1.dp)
            )
        }
    }

    @Composable
    fun CreateLazyColumn(pos: String, countItem: Int) {
        LazyColumn {
            items(count = countItem, itemContent = { index ->
                VItem("$pos.$index")
            })
        }
    }

    @Composable
    fun Home() {
        LazyColumn {
            item { VItem("Vertical item 1") }
            item { VItem("Vertical item 2") }
            item { VItem("Vertical item 3") }
            item { VItem("Vertical item 4") }
            item {
                LazyRow(modifier = Modifier.height(150.dp)) {
                    item {
                        HItem {
                            CreateLazyColumn("Horizontal item 5.1", 6)
                        }
                    }
                    item {
                        HItem {
                            CreateLazyColumn("Horizontal item 5.2", 10)
                        }
                    }
                    item {
                        HItem {
                            Text(
                                modifier = Modifier.padding(40.dp),
                                text = "Horizontal item 5.3"
                            )
                        }
                    }
                    item {
                        HItem {
                            Text(
                                modifier = Modifier.padding(40.dp),
                                text = "Horizontal item 5.4"
                            )
                        }
                    }
                    item {
                        HItem {
                            CreateLazyColumn("Horizontal 5.5", 6)
                        }
                    }
                    item {
                        HItem {
                            Text(
                                modifier = Modifier.padding(40.dp),
                                text = "Horizontal item 5.6"
                            )
                        }
                    }
                    item {
                        HItem {
                            Text(
                                modifier = Modifier.padding(40.dp),
                                text = "Horizontal item 5.7"
                            )
                        }
                    }
                    item {
                        HItem {
                            Text(
                                modifier = Modifier.padding(40.dp),
                                text = "Horizontal item 5.8"
                            )
                        }
                    }
                }
                Divider(color = Color.Black)
            }
            item { VItem("Vertical item 6") }
            item { VItem("Vertical item 7") }
            item { VItem("Vertical item 8") }
            item { VItem("Vertical item 9") }
            item { VItem("Vertical item 10") }
            item { VItem("Vertical item 11") }
            item { VItem("Vertical item 12") }
        }
    }
}

视频

 类似资料:
  • 问题-向下滚动导致底部工作表滚动,而不是优先滚动LazyColumn (RecyclerView没有这个问题。它被一个嵌套的卷视图包裹着 我刚刚在协调器布局中引入了对Recycler的Compose LazyCol列替换。协调器(作为底部工作表实现)本身可以在窥视和扩展状态之间自由滚动。我的问题是当在LazyCol列中向下拖动项目区域时,底部工作表会拾取滚动而不是LazyCol列。如果我在Lazy

  • 我想通过下面的代码在用xml编写的底部表单对话框中添加lazyColumn: 在撰写视图中将放置lazyCol在。问题是我无法将lazyCol在NestedScrollView中使用,并出现以下错误和应用程序崩溃: 不允许嵌套可沿同一方向滚动的布局,如LazyColumn和Column(Modifier.verticalScroll())。有人对如何解决这个问题有什么想法吗。这是我的lazyCol

  • 有什么方法可以添加滚动条以添加(已弃用)。Javadoc没有提到任何关于Jetpack撰写中的滚动条的内容。 在Jetpack Compose中有可能做到吗?还是不支持滚动条?

  • 上周我更新了Kotlin 1.5,昨天看到谷歌打算让Jetpack成为设计UI的首选选项后,我想做一些测试。 问题是将我的项目更新为静态编程语言1.5,当尝试构建项目时,我得到以下错误: 静态编程语言1.5与Jetpack Compose不兼容吗?在谷歌搜索问题后,我找到了版本,其中提到了Jetpack Compose,但不是以“不兼容”的方式。 你对此有任何答案吗?我应该使用吗?在这种情况下,我

  • 目前在Jetpack Compose中,此代码会抛出一个,因为您无法嵌套两个垂直滚动的Composables: 我不希望网格本身滚动,而只是显示我传递到其中的可组合的固定网格。在 中显示非滚动网格是否有任何解决方法?

  • 我正在尝试通过< code>BottomSheetScaffold为一些自定义实现实现< code>modalBottomSheet。 这是我的 当这个scaffold被某个屏幕调用时,< code>sheetContent()将被替换为屏幕内容。这里我问题是,当< code>bottomSheet()在屏幕上是空的,因此没有高度,底部工作表状态认为它是展开的,而我只是没有将composable放