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

Jetpack组合底部纸张初始化错误

杜炫明
2023-03-14

在Jetpack compose 1.0.0-beta01中,我这样调用BottomSheetScaffold:

BottomSheetScaffold(
    scaffoldState = bottomSheetScaffoldState,
    sheetContent = { Text("") },
    sheetShape = Shapes.large,
    backgroundColor = AppTheme.colors.uiBackground,
    modifier = modifier
    
) { (content) }

...并获得以下错误:

java.lang.IllegalArgumentException:初始值必须具有关联的锚点。

有什么解决办法吗?

共有3个答案

岳彬炳
2023-03-14

我在使用ModalBottomSheetLayout时也遇到了同样的问题,我的compose材质版本是1 . 2 . 0-rc02 androidx . compose . material:material:1 . 2 . 0-rc02我想在选中一个项目时显示底部的modal,如果没有选中任何项目,那么modal应该是空的。

ModalBottomSheetLayout(
    sheetState = modalBottomSheetState,
    sheetContent = {
        EditProgressContent(book = book)
    }
) { ... }

@Composable
fun EditProgressContent(book: Book?) {
    if (book == null) return
    Text(book.title)
}

当book为空时,我得到了同样的崩溃。ModalBottomSheetLayout没有peekHeight参数,所以当book为null时,我必须添加一个像素

@Composable
fun EditProgressContent(book: Book?) {
    if (book == null) { 
        Box(modifier = Modifier.size(1.dp)
        return
    }
    Text(book.title)
}

代码看起来很傻,希望可以从Google修复。

彭华皓
2023-03-14

当bottomSheetState为expand时,sheetContent必须有真实的内容才能显示。

您需要检查此内容。

史钊
2023-03-14

别忘了添加以下安替比妥:

SheetPeekHeight=0.dp

所以你的代码应该是这样的:

BottomSheetScaffold(
    scaffoldState = bottomSheetScaffoldState,
    sheetContent = { Text("") },
    sheetShape = Shapes.large,
    sheetPeekHeight = 0.dp, // <--- new line
    backgroundColor = AppTheme.colors.uiBackground,
    modifier = modifier
    
) { (content) }
 类似资料:
  • 我在我的WordPress网站上使用JetPack,并启用了延迟加载。然而,在我的网站中,我用AJAX更新了一些内容,这导致加载1x1占位符的图像,而不是真正的图像,这是懒惰加载会处理的。 如何使用Jet Pack再次调用延迟加载?我似乎记得有一个JavaScript函数,但找不到它是什么。

  • 在“初始化Java工具”期间发生内部错误。无法初始化类org.eclipse.jdt.core。JavaConventions在Eclipse中下载AspectJ开发工具后。我在用Spring靴。 我不知道是什么问题。

  • 问题内容: 我是使用log4j软件包的新手,但看不到错误:这是一个非常简单明了的代码示例: 当我尝试编译时,出现此错误: my.package.logging.TestLogger.main(TestLogger.java:15)上的org.apache.logging.log4j.LogManager.getLogger(LogManager.java:129)处的线程“ main”中的java

  • 问题内容: 我知道您可以在实例化期间初始化数组,如下所示: 有没有办法用ArrayList做同样的事情?还是我必须单独添加内容? 问题答案: Arrays.asList可以在这里提供帮助:

  • 问题内容: 我知道当我初始化一个char数组时: 要么 为什么不喜欢 初始化数组: 为什么它们不同?它是Java哲学的本质之一还是其​​背后的某些原因? 问题答案: 如果您曾经使用过 C ,那么答案就非常简单。在 C语言中 ,创建数组的方式是在堆栈上分配一个足以容纳元素数量的静态内存长度,并使用指针指向第一个元素-或堆上动态内存长度,然后用指针指向第一个元素。 在 C ++中 ,第二个版本已更改为

  • BottomBar有4个目的地:ScreenA,ScreenB,ScreenC和ScreenD。 在ScreenA上按下按钮(不是底部栏项)时,我想使用参数转到ScreenB。 导航图 底部栏 到目前为止,单击ScreenA上的按钮会将我导航到ScreenB,但参数值始终为0,因为我永远不会传递在lambda中传递的参数。我使用的是compose_version='1.2.0-alpha04'和"