Android Jetpack Compose 全宽抽屉

Android Jetpack Compose full width drawer

提问人:kkkkk 提问时间:6/17/2023 更新时间:6/18/2023 访问量:292

问:

你如何制作一个抽屉来填满整个屏幕的宽度?

    ModalNavigationDrawer(
        drawerState = drawerState,
        drawerContent = {
            ModalDrawerSheet(
                modifier = Modifier
                    .fillMaxWidth()
                    .fillMaxHeight()
                    .background(Color.Yellow),
            ) {

            }
        },
        content = {

        }
    )

此代码不起作用。当抽屉关闭时,可以看到其中的一小块。

Android Kotlin android-jetpack 抽屉布局

评论


答:

2赞 william xyz 6/17/2023 #1

当将修饰符直接添加到 时,就会发生这种奇怪的行为,通过将其添加到子元素中,它不会发生。ModalDrawerSheet

@Composable
fun Test() {
    val drawerState = rememberDrawerState(initialValue = DrawerValue.Closed)

    ModalNavigationDrawer(
        drawerState = drawerState,
        drawerContent = {
            ModalDrawerSheet(
                modifier = Modifier
                    .then(
                        if (drawerState.targetValue == DrawerValue.Open) Modifier.fillMaxSize() else Modifier
                    )
            ) {
                Column(
                    modifier = Modifier
                        .fillMaxSize()
                        .background(Color.Yellow)
                ) {

                }
            }
        },
    content = {

    }
  )
}

虽然,在抽屉关闭时应用最大尺寸会导致副作用,但我们可以添加一个条件,仅在抽屉打开时使用 。ModalDrawerSheetModifier.then

enter image description here

评论

0赞 kkkkk 6/18/2023
尽管如此,这仍然不是我正在寻找的行为。我需要它覆盖整个屏幕。打开时。
0赞 william xyz 6/18/2023
@kkkkk我已经更新了我的答案以匹配这种行为。
1赞 kkkkk 6/18/2023
伟大!谢谢,它:)