我有一个应用程序,我想全屏运行。如果我有一台带有4.4 KitKat的设备,可以很容易地设置SYSTEM_UI_FLAG_IMMERSIVE
以使应用程序变为全屏。
但是,如果我有一个API低于4.4的设备。我不知道如何将它全屏视为具有沉浸式支持的KitKat。
我可以设置全屏,并隐藏导航标记以使应用程序全屏显示,但是一旦点击屏幕,这些标记就会重置,现在将显示导航栏和状态栏。
是否有解决方案,我可以在JB和可能的ICS设备上“模拟”沉浸式模式(下面不是必须的)。
我有一个方法hideSystemUI,它在OnSystemUiVisibilityChangeListener
触发时运行,目前看起来像这样。
private void hideSystemUI() {
actionBar.hide();
isMenuVisible = false;
if (currentapiVersion >= android.os.Build.VERSION_CODES.KITKAT){
mDecorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| 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);
}
else{
mDecorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN);
}
}
我需要进行哪些更改才能使应用程序全屏显示,并且不会在每次点击时显示导航栏和状态栏,而是从顶部或底部显示幻灯片。
答案 0 :(得分:3)
这就像你要获得的那样接近:
if (Build.VERSION.SDK_INT >= 19) {
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
} else {
if (Build.VERSION.SDK_INT > 10) {
findViewById(android.R.id.content).setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
}
}
并且不支持SDK少于10的设备。无论如何,这些笑话者需要获得一个现代的Android。
答案 1 :(得分:1)
我遇到了同样的情况,经过一些研究后我发现由于安全问题,它不可能低于4.4,因此旧的API不会支持隐藏导航栏的方式。 即使从API 4.1中使用SYSTEM_UI_FLAG_LAYOUT_STABLE标志,您的布局也不会调整大小,它会在导航栏后面膨胀,但您需要确保它不会覆盖任何重要的UI组件。
https://developer.android.com/training/system-ui/immersive.html 希望这有助于.. :))
答案 2 :(得分:0)
只需将代码下方的代码复制到value / style.xml。
<resources>
<style name="AppBaseTheme" parent="Theme.AppCompat.Light">
</style>
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
答案 3 :(得分:-3)
沉浸式模式有两种方法
为了让它保持身临其境,请改变这条线
View.SYSTEM_UI_FLAG_IMMERSIVE
通过这一行 -
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY