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

Android应用无法通过XML/Kotlin设置系统底部导航栏为黑色,如何解决?

在Kotlin中动态设置Android底部导航栏为黑色

直接在MainActivity的onCreate方法中添加以下代码,就能在应用启动时将底部导航栏设为黑色:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    // 设置导航栏背景色为黑色
    window.navigationBarColor = ContextCompat.getColor(this, R.color.black)

    // 可选:确保导航栏图标为浅色,与黑色背景适配(避免图标看不清)
    ViewCompat.getWindowInsetsController(window.decorView)?.apply {
        isAppearanceLightNavigationBars = false
    }
}

为什么XML设置没生效?

大概率是你当前使用的Theme.Snoozz主题继承的父主题覆盖了navigationBarColor属性,比如如果继承的是浅色主题(如Theme.MaterialComponents.Light.*),部分系统默认样式优先级会更高。动态设置的方式会直接覆盖主题配置,优先级更高。

额外注意事项

  1. 确认你的colors.xml中正确定义了全不透明的黑色:
    <color name="black">#FF000000</color>
    
    必须带FF开头的alpha通道,否则导航栏会呈现半透明效果。
  2. 针对Android 10及以下版本,需要先开启系统栏背景绘制权限:
    window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
    window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION)
    
  3. 如果你的主题设置了android:windowTranslucentNavigation="true",需要先移除这个属性,否则导航栏无法显示纯色背景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 02:47:28