Android sdk 36沉浸式兼容性问题修复
windowOptOutEdgeToEdgeEnforcement 的作用
windowOptOutEdgeToEdgeEnforcement
是 Android 系统中一个与窗口边缘手势相关的 API,主要用于控制应用是否选择退出系统的边缘手势强制全屏化(Edge-to-Edge)行为。以下是其核心作用和背景:
-
Edge-to-Edge 强制实施的背景
Android 从某些版本(如 Android 10 及以上)开始强制应用支持 Edge-to-Edge 显示,即内容延伸到系统导航栏(如底部手势条)区域。系统会默认调整窗口布局,确保手势操作区域与应用内容不发生冲突。 -
API 的用途
当应用设置windowOptOutEdgeToEdgeEnforcement
为true
时,表示应用选择退出系统的 Edge-to-Edge 强制策略。此时系统不会自动调整窗口布局,应用需自行处理与系统手势区域的交互(如避免内容被遮挡或手势冲突)。 -
适用场景
- 需要完全自定义窗口布局(如游戏或全屏视频播放器)。
- 应用已手动处理了系统手势区域的兼容性,无需系统干预。
- 因特殊设计需求需保留传统布局行为(如底部固定按钮栏)。
-
注意事项
- 若选择退出强制策略,应用需通过
WindowInsets
监听手势区域边界,并调整内容位置。 - 未正确处理可能导致手势操作失效或内容遮挡。
- 若选择退出强制策略,应用需通过
-
代码示例
在Activity
或主题中声明:<item name="android:windowOptOutEdgeToEdgeEnforcement">true</item>
或通过 Java/Kotlin 动态设置:
window.attributes.flags = window.attributes.flags or WindowManager.LayoutParams.FLAG_OPT_OUT_EDGE_TO_EDGE_ENFORCEMENT
TIPS:API 主要用于解决系统强制策略与特殊应用场景的兼容性问题,需谨慎使用以确保用户体验一致性。