You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Jetpack Compose全屏宽度抽屉实现:代码无效且关闭仍显部分

实现全屏宽度的ModalNavigationDrawer抽屉

默认的ModalDrawerSheet遵循Material Design规范,自带固定宽度(通常为320.dp),且ModalNavigationDrawer的抽屉在关闭状态下不会完全移出屏幕,这就是你看到关闭后仍有小部分可见的原因。以下是两种解决方法:

方法一:自定义抽屉容器替代ModalDrawerSheet

直接使用基础布局组件(如Box)作为抽屉容器,完全控制尺寸:

ModalNavigationDrawer(
    drawerState = drawerState,
    // 可选:仅在抽屉打开时启用滑动手势,避免关闭时误触
    gesturesEnabled = drawerState.isOpen,
    drawerContent = {
        Box(
            modifier = Modifier
                .fillMaxSize()
                .background(Color.Yellow)
        ) {
            // 在这里添加抽屉的内容
        }
    },
    content = {
        // 主页面内容区域
    }
)

方法二:修改ModalDrawerSheet的宽度约束

保留ModalDrawerSheet的样式,但覆盖其默认宽度限制:

ModalNavigationDrawer(
    drawerState = drawerState,
    drawerContent = {
        ModalDrawerSheet(
            modifier = Modifier
                .fillMaxHeight()
                .background(Color.Yellow),
            // 设置宽度为填充父布局约束
            width = Dimension.fillToConstraints
        ) {
            // 抽屉内容
        }
    },
    content = {
        // 主页面内容区域
    }
)

注意:如果使用第二种方法仍有部分可见,可配合调整ModalNavigationDrawer的动画偏移逻辑,确保关闭时抽屉完全移出屏幕可视区域。

内容的提问来源于stack exchange,提问作者kkkkk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 12:57:05