gpt4 book ai didi

安卓 : Fullscreen system visibility screws up window insets

转载 作者:太空宇宙 更新时间:2023-11-03 11:05:18 27 4
gpt4 key购买 nike

我正在编写一个应用程序,它有一个 Activity 和一堆 fragment ,其中一个 fragment 是全屏的。为了实现这一点,我正在尝试使用系统 UI 可见性标志。

对于全屏 fragment ,我设置了可见性:

layout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);

一旦我这样做,窗口插图就会更改为似乎没有任何意义的值。然后,当我退出该全屏 fragment 时,我的 View 中出现了错误的填充(基于奇怪的插图)

enter image description here

有人知道这是怎么回事吗?我理解窗口嵌入的方式一定是错误的,因为这种行为似乎完全违反直觉。任何见解将不胜感激。

要查看我为说明问题而编写的测试应用程序的完整源代码,请转到此处:

https://github.com/dapp/visibilitytest

最佳答案

我今天遇到了同样的问题。我正在使用设计库中的 NavigationView。当我退出全屏时,NavigationView 的顶部和底部都有 bug ,很难看。

我调试并深入NavigationView的源代码,找到以下解决方案:

  1. 请为您的 View (在我的示例中为 NavigationView)使用 setFitsSystemWindows(false) 方法,以避免状态栏和导航栏更改的影响。

  2. 我发现 NavigationView 的父类(super class) ScrimInsetsFrameLayout 中有 OnApplyWindowInsetsListener,然后我使用 ViewCompat.setOnApplyWindowInsetsListener(mNavigationView, null) 清除此监听器以避免在启用/禁用全屏时产生影响。

现在 NavigationView 在退出全屏时表现正确,希望这对您的问题有所帮助。

关于安卓 : Fullscreen system visibility screws up window insets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34445535/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com