Jetpack Compose中DropdownMenu点击外部无法收起且菜单项无响应如何解决
问题修复方案
你遇到的两个异常的共同根源是 Scaffold 内容布局没有应用内置边距,导致主内容层覆盖了底部 BottomAppBar 及弹出的 DropdownMenu 的触摸区域,触摸事件被上层内容消费无法传递到菜单组件。而返回键属于系统按键事件,不受触摸分发层级影响因此可以正常触发回调。
修复步骤
- 调整
SampleScreen中Scaffold的内容逻辑,将Scaffold传入的innerPadding应用到内容根布局,避免主内容覆盖底部导航区域:
@Composable fun SampleScreen() { Scaffold(bottomBar = {MyBottomBar()}) { innerPadding -> Text( "hello world", // 应用Scaffold内置边距,避开顶部状态栏、底部导航栏区域 modifier = Modifier.padding(innerPadding) ) } }
- 若修复后仍存在异常,请检查你的Compose Material依赖版本:
- 确保
androidx.compose.material:material版本不低于1.2.0,早期版本存在底部弹出DropdownMenu触摸事件拦截的已知bug,升级依赖即可解决。
修复后点击菜单外部、点击菜单项都可以正常触发onDismissRequest回调收起菜单。
内容的提问来源于stack exchange,提问作者Herman
相关产品推荐
相关产品推荐

