Android Compose - 平板电脑上的应用程序在使用 LazyColumn 时崩溃

Posted

技术标签:

【中文标题】Android Compose - 平板电脑上的应用程序在使用 LazyColumn 时崩溃【英文标题】:Android Compose - application on tablets crashes when using a LazyColumn 【发布时间】:2021-06-13 21:27:37 【问题描述】:

java.lang.IllegalStateException:不允许在相同方向的布局中嵌套可滚动,如 ScrollableContainer 和 LazyColumn。如果您想在项目列表之前添加标题,请查看 LazyColumn 组件,该组件具有 DSL api,允许首先通过 item() 函数添加标题,然后通过 items() 添加项目列表。

在尝试使用 LazyColumn 时,此错误总是出现在平板电脑上。 LazyColumn 在手机上正常工作。即使 setContent 中的 Composable 函数仅包含 LazyColumn,也会出现错误。

Studio 构建:android Studio 4.2 beta 6 / Canary 10 Gradle 插件版本:4.2.0-beta06 / 7.0.0-alpha10 Gradle 版本:6.8.3 / 6.8.2 Compose 版本:1.0.0-beta02(1.0.0-beta01 有同样的问题)

【问题讨论】:

能否提供代码。 检查您没有使用可滚动组件(即使用verticalScroller 修饰符或类似的)作为LazyColumn 的父级 @kugemi 你得到这个答案了吗? 【参考方案1】:

我遇到了同样的问题,@MR3YY 的评论解决了我的问题。我有一个lazyColumn:

LazyColumn(
    modifier = Modifier
        .fillMaxSize()
        .verticalScroll(rememberScrollState())
) 
    items(myDs) dev ->
        deviceView(device = dev)
    


并删除verticalScroll(rememberScrollState()) 修复了错误。

LazyColumn(
    modifier = Modifier
        .fillMaxSize()
) 
    items(myDs) dev ->
        deviceView(device = dev)
    


【讨论】:

verticalScroll 是怎么回事?我有同样奇怪的问题

以上是关于Android Compose - 平板电脑上的应用程序在使用 LazyColumn 时崩溃的主要内容,如果未能解决你的问题,请参考以下文章

[Docker Compose定义运行多个Docker容器]

Jetpack Compose 中适配不同的屏幕尺寸

Docker Compose编排工具

Jetpack compose 上的 AdjustResize 不起作用

android -------- Jetpack Compose 项目案例分享

android -------- Jetpack Compose 项目案例分享