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

Android API 35+边缘到边缘相关废弃API的替代方案咨询

Android API 35+ 边缘到边缘UI及系统UI定制替代方案

针对API 35+废弃的边缘到边缘及系统UI相关API,以下是官方推荐的替代方案与最佳实践:

一、边缘到边缘模式配置

替代废弃的setDecorFitsSystemWindows(包括系统API和EdgeToEdgeOSWrapper中的方法):

推荐方案(Jetpack Core 兼容全版本)

使用Jetpack的EdgeToEdge工具类快速开启边缘到边缘模式,同时处理内容内边距避免被系统栏遮挡:

import androidx.core.view.EdgeToEdge
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat

// 在Activity onCreate中调用
EdgeToEdge.enable(window)

// 给根布局设置内边距监听,适配系统栏
ViewCompat.setOnApplyWindowInsetsListener(rootView) { view, insets ->
    val systemBarsInsets = insets.getInsets(WindowInsetsCompat.Type.systemBars())
    view.setPadding(
        systemBarsInsets.left,
        systemBarsInsets.top,
        systemBarsInsets.right,
        systemBarsInsets.bottom
    )
    insets
}

系统API方案(仅API 34+)

如果直接使用系统API,可通过WindowInsetsController控制系统栏行为:

window.setDecorFitsSystemWindows(false)
window.insetsController?.systemBarsBehavior = WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE

二、状态栏颜色定制

替代setStatusBarColor和getStatusBarColor:

设置状态栏颜色

// API 34+ 系统API
window.insetsController?.setStatusBarColor(Color.RED, true) // 第二个参数控制是否带动画

// Jetpack 兼容方案(推荐)
import androidx.core.view.WindowCompat
WindowCompat.setStatusBarColor(window, Color.RED)

获取状态栏颜色

// API 34+ 系统API
val statusBarColor = window.insetsController?.getStatusBarColor() ?: Color.TRANSPARENT

// Jetpack 兼容方案
val statusBarColor = WindowCompat.getStatusBarColor(window)

三、导航栏颜色与分割线定制

替代setNavigationBarColor和setNavigationBarDividerColor:

设置导航栏颜色

// API 34+ 系统API
window.insetsController?.setNavigationBarColor(Color.BLUE, true)

// Jetpack 兼容方案
WindowCompat.setNavigationBarColor(window, Color.BLUE)

设置导航栏分割线颜色

// API 34+ 系统API
window.insetsController?.setNavigationBarDividerColor(Color.GRAY, true)

// Jetpack 兼容方案
WindowCompat.setNavigationBarDividerColor(window, Color.GRAY)

最佳实践

  • 优先使用Jetpack Core库的API,确保从低版本到API35+的全兼容,减少版本适配成本。
  • 开启边缘到边缘模式后,务必通过ViewCompat.setOnApplyWindowInsetsListener处理内容内边距,避免布局被状态栏/导航栏遮挡。
  • 动态调整系统栏样式时,使用WindowInsetsControllerCompat(Jetpack)或WindowInsetsController(系统API)控制可见性、颜色与行为,替代旧的Window直接操作API。
  • 测试时覆盖API35+设备,验证新API的动画、颜色表现是否符合预期,同时确保低版本设备的兼容行为正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 23:36:10