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

MIUI中Material3 DropdownMenu弹出导致导航栏异常显示的解决方案

问题:MIUI 13下DropdownMenu导致隐藏的导航栏弹出

我有一个隐藏导航栏的纯Compose Activity,原本运行正常,但显示androidx.compose.material3.DropdownMenu时,导航栏会重新出现,关闭菜单后又隐藏。设置DropdownMenu(properties = PopupProperties(dismissOnBackPress = false))后,导航栏会在菜单出现时弹出,随后自行快速隐藏并伴随动画。

代码示例

@Composable
fun MenuSample(onSearch: () -> Unit) {
    var expanded by remember { mutableStateOf(false) }
    DropdownMenu(
        expanded = expanded,
        onDismissRequest = { expanded = false },
        properties = PopupProperties(dismissOnBackPress = false)
    ) {
        DropdownMenuItem(
            text = { Text("Search") },
            onClick = onSearch,
            leadingIcon = {
                Icon(
                    Icons.Outlined.Search,
                    contentDescription = null
                )
            })
    }
}

导航栏初始隐藏配置

class MyActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        Companion.window = window
        hideNavBarAgain()
        setContent { MyJetpackContent() }
    }

    companion object { //for experimentation purposes
        var window: Window? = null

        fun hideNavBarAgain() {
            WindowInsetsControllerCompat(window!!, window!!.decorView).let { controller ->
                controller.hide(WindowInsetsCompat.Type.navigationBars())
                controller.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
            }
        }
    }
}

已尝试的方案

  • dismiss-false:将properties = PopupProperties(dismissOnBackPress = false)作为DropdownMenu参数
  • SideEffect:在MenuSample及外围添加SideEffect { MyActivity.hideNavBarAgain() }
  • remCorSc.launch:在菜单触发点击lambda中执行rememberCoroutineScope.launch { MyActivity.hideNavBarAgain() }
  • onPlaced:为DropdownMenu和DropdownMenuItem添加Modifier.onPlaced { MyActivity.hideNavBarAgain() }

实验矩阵(所有案例导航栏均在OnCreate()中隐藏)

dismiss-falseSideEffectremCorSc.launchonPlacedoutcome
➖➖➖➖😣 导航栏持续显示
➕➖➖➖😕 导航栏跳动显示
➖➕➖➖😣 导航栏持续显示
➖➖➕➖😣 导航栏持续显示
➕➕➕➕😕 导航栏跳动显示

所有问题仅发生在MIUI 13上,纯净Android 14(Nothing OS)无此问题,仅靠Activity配置即可正常隐藏导航栏。请问如何在所有平台上正确阻止导航栏弹出?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 06:27:49