【问题标题】:When Android automatically exits Immersive Sticky it does not resize views so they are blocked当 Android 自动退出 Immersive Sticky 时,它不会调整视图大小,因此它们会被阻止
【发布时间】:2018-07-12 04:10:44
【问题描述】:

我有一个活动可以通过单击按钮进入沉浸式粘性全屏。此按钮执行以下代码以进入沉浸式粘性全屏。

getActivity().getWindow().getDecorView().setSystemUiVisibility(
      View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
    | View.SYSTEM_UI_FLAG_FULLSCREEN
    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);

注意:我特别不包含以下标记,就像我这样做一样,当我退出沉浸式粘性全屏时,它会破坏我的屏幕布局。请参阅我的另一个问题:Android closing full screen view at the bottom is shunted off the screen

View.SYSTEM_UI_FLAG_LAYOUT_STABLE

当 Android 处于沉浸式全屏状态时,当显示另一个视图(例如 DialogFragment、AlertDialog)时,键盘出现时,Android 会通过显示状态栏和屏幕导航栏自动将您带出沉浸式全屏。但是它不会在我的应用程序中调整视图的大小,所以现在我的视图位于导航栏下方,我无法访问屏幕底部的任何按钮。我已经使用“View.SYSTEM_UI_FLAG_LAYOUT_STABLE”标志进行了测试,它没有区别,视图仍然没有调整大小。

这似乎是 Android 行为的一个巨大缺陷,我肯定做错了什么。当它显示状态栏和导航栏时,如何让它调整我的视图大小?

我可以解决某些情况,例如使用以下 SO 问题中的代码弹出对话框,https://stackoverflow.com/a/24549869/2663916 但我有很多可能的东西可以在我的全屏视图中弹出,我不想必须在每个地方都放置该hack,以使其保持身临其境的全屏状态。此外,当键盘出现时,我确实希望出现导航栏。

Android 在显示屏幕栏时当然应该调整屏幕视图。

【问题讨论】:

    标签: android layout android-immersive


    【解决方案1】:

    重新阅读 Google 文档很明显,原因是包含以下两个标志

    View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN      // this STOPS Android resizing my view to be below the status bar when it is displayed
    View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION // this STOPS Android resizing my view to be above the nav bar when it is displayed
    

    https://developer.android.com/training/system-ui/immersive.html “最好包含其他系统 UI 标志(例如 SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 和 SYSTEM_UI_FLAG_LAYOUT_STABLE)以防止在系统栏隐藏和显示时调整内容的大小。您还应该确保操作栏和其他 UI 控件隐藏在同一时间。”

    【讨论】:

      猜你喜欢
      • 2015-09-07
      • 1970-01-01
      • 1970-01-01
      • 2012-09-17
      • 1970-01-01
      • 2015-11-28
      • 2015-04-14
      • 1970-01-01
      • 2012-10-27
      相关资源
      最近更新 更多