如何在 Jetpack Compose 中使底部工作表覆盖整个屏幕

Bre*_*ett 16 android android-jetpack android-jetpack-compose

我正在使用 Jetpack Compose 并尝试在用户单击 .txt 文件中的登录按钮时使登录屏幕覆盖整个屏幕TopAppBar

ModalBottomSheetLayout我使用和 a的组合,Scaffold所以我可以有 aTopAppBar和 a BottomAppBar

目前,当显示登录屏幕时,它仅覆盖屏幕的一半。

                       val coroutineScope = rememberCoroutineScope()
                        val bottomState = rememberModalBottomSheetState(ModalBottomSheetValue.Hidden)
                        ModalBottomSheetLayout(
                            sheetState = bottomState,
                            sheetShape = MaterialTheme.shapes.large,
                            sheetContent = {
                                FullScreen()
                            }
                        ) {

                            Scaffold(
                                topBar = {
                                    TopAppBar(
...
                                content = {

                                    NavHost(navController = navController,
                                        startDestination = "journey") {
                                        composable("journey") { JourneyScreen() }
...
                               bottomBar = {
                                    BottomAppBar(
                                        content = {
                                            BottomNavigation() {

                                                val navBackStackEntry by navController.currentBackStackEntryAsState()
...

Run Code Online (Sandbox Code Playgroud)
@Composable
fun FullScreen() {
    Box(modifier = Modifier
        .fillMaxSize()
    ) {
        Text("Full Screen")
    }
}
Run Code Online (Sandbox Code Playgroud)

已经被困在这个问题上太久了,感谢任何帮助。

Gab*_*tti 37

现在是animateTo内部的。

通过 M3 ( 1.1.0),您可以使用该expand方法

scope.launch { state.expand() }
Run Code Online (Sandbox Code Playgroud)

使用 M2 ( 1.4.0) 和 M3 ( 1.1.0) 您可以将属性设置skipHalfExpandedtrue

val state = rememberModalBottomSheetState(
    initialValue = ModalBottomSheetValue.Hidden,
    skipHalfExpanded = true
)
Run Code Online (Sandbox Code Playgroud)

然后使用show方法:

scope.launch { state.show() }
Run Code Online (Sandbox Code Playgroud)

在 M2 ( 1.4.0) 拥有全屏ModalBottomSheetLayout之前,state.show()您可以使用:

scope.launch { state.animateTo(ModalBottomSheetValue.Expanded) }
Run Code Online (Sandbox Code Playgroud)