Jetpack Compose 底部工作表初始化错误

Mar*_*arr 5 android android-jetpack-compose

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

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

...并收到以下错误:

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

有关解决此问题的任何提示?

小智 18

当bottomSheetState展开时,sheetContent必须有真正的内容要显示。

你需要检查一下这个。

  • 具体来说,它必须有一个与初始状态不同的目标状态(例如“sheetPeekHeight = 0``”),因此高度为“0”的内容将不起作用。 (2认同)

Mar*_*arr 14

不要忘记添加以下属性:

SheetPeekHeight = 0.dp

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

BottomSheetScaffold(
    scaffoldState = bottomSheetScaffoldState,
    sheetContent = { Text("") },
    sheetShape = Shapes.large,
    sheetPeekHeight = 0.dp, // <--- new line
    backgroundColor = AppTheme.colors.uiBackground,
    modifier = modifier
    
) { (content) }
Run Code Online (Sandbox Code Playgroud)


Tin*_*ink 5

使用 ModalBottomSheetLayout 时遇到同样的问题,我的撰写材质版本是 1.2.0-rc02 androidx.compose.material:material:1.2.0-rc02 我想在选择一项时显示底部模态,如果没有项被选中时,模态框应该为空。

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

@Composable
fun EditProgressContent(book: Book?) {
    if (book == null) return
    Text(book.title)
}
Run Code Online (Sandbox Code Playgroud)

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

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

该代码看起来很愚蠢,希望谷歌能够修复它。