Android 13导航栏设为白色后按钮不可见的Kotlin解决方案咨询
Android 13 导航栏按钮颜色修改方案(Kotlin)
一、主题配置方式(推荐)
在对应的主题文件(res/values/themes.xml 或 res/values-v33/themes.xml)中添加以下配置,直接在主题层面解决问题:
<style name="YourAppTheme" parent="Theme.Material3.DayNight.NoActionBar"> <!-- 设置导航栏背景为白色 --> <item name="android:navigationBarColor">@android:color/white</item> <!-- 开启浅色导航栏模式,系统自动将按钮设为深色(适配Android 10+) --> <item name="android:windowLightNavigationBar">true</item> <!-- Android 13+ 可直接指定按钮颜色(可选,若需自定义非系统默认的深色) --> <item name="android:navigationBarIconColor">@android:color/black</item> </style>
二、Kotlin 代码动态设置
如果需要在运行时动态调整,可在 Activity 的 onCreate 方法中添加以下代码:
import android.os.Build import android.graphics.Color override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // 设置导航栏背景色为白色 window.navigationBarColor = Color.WHITE // 开启浅色导航栏,自动切换按钮为深色(Android 10+ 生效) window.isLightNavigationBarEnabled = true // Android 13+ 强制指定按钮颜色(按需使用) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { window.navigationBarIconColor = Color.BLACK } }
三、注意事项
windowLightNavigationBar是 Android 10(API 29)引入的适配方案,在 Android 13 中依然有效,且符合系统设计规范,优先使用。navigationBarIconColor是 Android 13(API 33)新增的 API,仅在该版本及以上生效,使用时必须添加版本判断,避免低版本崩溃。- 若之前的方案无效,检查是否针对 Android 13 单独配置了主题,或代码中版本判断逻辑是否错误(比如误将 API 33 写成了更低版本)。
内容的提问来源于stack exchange,提问作者Limun
相关产品推荐
相关产品推荐

