【问题标题】:Proper way to switch fragments from stable to full-screen?将片段从稳定切换到全屏的正确方法?
【发布时间】:2019-11-05 04:55:41
【问题描述】:

我正在使用单个活动 - 带有底部导航栏的多个片段架构。有一些片段使用稳定的布局标志,而另一些片段使用全屏布局标志。但是,当从 SYSTEM_UI_FLAG_LAYOUT_STABLE 切换到 SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN(反之亦然)时,内容不会正确填满屏幕 - 当切换到稳定时,底部会被向下推过导航,当切换回全屏时,内容不会正确填充屏幕。如果我从那个片段切换到另一个全屏片段,问题就会自行纠正。我想知道是否有办法从一开始就防止这个问题发生。

这是我用来在稳定和全屏之间切换的代码:

fun makeFullScreen() {
    window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
}

fun makeStable() {
    window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
}

各自的函数在每个片段的 onResume() 函数中被调用。任何帮助将不胜感激。

您可以在此处查看问题的屏幕截图:https://imgur.com/a/B7qh98Y

谢谢

编辑1:澄清一下,我基本上希望底部导航栏保持在底部的正确位置,而不是您在屏幕截图中看到的“跳跃”行为。

【问题讨论】:

  • 您在进行切换时是否尝试过activity.recreate(),如果没有其他效果?
  • 我认为这可能会起作用,唯一的事情是在我的脑海中,我不知道如何做到这一点而不会陷入无限循环。虽然我只尝试直接从片段而不是从主机活动中调用它

标签: android android-layout android-fragments


【解决方案1】:

试试这个

requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

【讨论】:

  • 感谢您的回答,但这似乎对我的问题没有帮助。我还需要一直显示状态栏。
【解决方案2】:

经过大量搜索(我已经断断续续地查找这个问题几个星期了),我终于找到了适合我的东西。此处提供的答案:BottomNavigationView jumps up leaving blank space when fullscreen

【讨论】:

  • 你在哪里应用你链接的答案中的 kotlin 代码?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-14
  • 1970-01-01
相关资源
最近更新 更多