【发布时间】: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