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

Android 15如何通过最新API设置状态栏颜色及图标适配?

Android 15(API 31+)状态栏颜色设置方案

核心说明

Android 15默认强制启用edgeToEdge(),传统的window.statusBarColorAPI已被废弃,需结合WindowInsetsControllerCompat和EdgeToEdge机制实现状态栏颜色自定义,同时自动适配图标明暗。

步骤1:依赖AppCompat库

确保项目依赖最新AppCompat库,兼容API 31+的Insets控制器:

implementation 'androidx.appcompat:appcompat:1.6.1'

步骤2:Activity中动态设置(推荐)

在Activity的onCreate方法中完成配置,支持动态切换颜色:

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsControllerCompat
import androidx.core.graphics.ColorUtils

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

        // 显式启用EdgeToEdge(Android 15默认已开启,兼容低版本)
        WindowCompat.setDecorFitsSystemWindows(window, false)

        val insetsController = WindowInsetsControllerCompat(window, window.decorView)
        val statusBarColor = getColor(R.color.your_custom_status_bar_color)

        // 设置状态栏背景色(替代废弃的window.statusBarColor)
        insetsController.setSystemBarsColor(statusBarColor)

        // 自动适配图标明暗:根据颜色亮度判断,浅色背景用深色图标,反之用浅色
        val isLightBackground = ColorUtils.calculateLuminance(statusBarColor) > 0.5
        insetsController.isAppearanceLightStatusBars = isLightBackground
    }
}

步骤3:主题层面全局配置

若需全局统一状态栏样式,可在主题文件中配置:

<!-- res/values/styles.xml -->
<style name="AppTheme" parent="Theme.Material3.DayNight.NoActionBar">
    <!-- 全局状态栏颜色 -->
    <item name="android:statusBarColor">@color/your_custom_status_bar_color</item>
    <!-- 自动适配图标明暗:跟随主题明暗模式 -->
    <item name="android:windowLightStatusBar">?android:attr/isLightTheme</item>
    <!-- 启用EdgeToEdge -->
    <item name="android:windowDecorFitsSystemWindows">false</item>
</style>

注意事项

  • 内容适配:启用EdgeToEdge后,布局内容会延伸至状态栏下方,需给顶部视图添加android:paddingTop="?android:attr/statusBarHeight",或通过WindowInsets动态处理内边距,避免内容被遮挡。
  • 颜色亮度判断:ColorUtils.calculateLuminance返回值范围0(纯黑)~1(纯白),以0.5为阈值判断背景明暗,确保图标与背景对比度达标。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 17:15:04