如何确定是否启用了边缘到边缘?

How to determinate edge-to-edge enabled?

提问人:Alex F. 提问时间:11/6/2023 更新时间:11/6/2023 访问量:30

问:

如何在我的片段中确定在活动中启用了具有功能的边缘到边缘WindowCompat.setDecorFitsSystemWindows(window, false)

有什么想法吗?

是否有可能得到 的值?WindowCompat.setDecorFitsSystemWindows(window, false)

android-fragments 全屏 状态栏 edge-to-edge

评论


答:

1赞 Marcin Orlowski 11/6/2023 #1

没有用于查询此状态的公共 API。您可能需要在应用中管理此状态,也许在启用边缘到边缘时设置一个标志,然后在片段中检查该标志?

或者,您可以尝试从系统 UI 可见性标志中扣除该值:

val isEdgeToEdgeEnabled = activity?.window?.decorView?.systemUiVisibility?.and(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION) != 0

但这需要使用反射,这可能是有风险的,因为它可能无法在不同的 Android 版本或设备上工作,并且可能会在未来的 Android 更新中中断,因此如果使用自己的标志就足够了,我不建议这样做。

评论

0赞 Alex F. 11/6/2023
活动?。窗?。decorView?.systemUiVisibility?.and(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION) != 0 返回 false ...最有可能的是,我必须将变量存储在具有状态的活动中,并等待公共 API :)感谢您的快速建议