退出全屏后如何重新显示状态栏+导航栏出现后不会消失

我有一个在小窗口中播放的视频,可以选择全屏播放。但是,问题是状态栏和导航栏隐藏/显示无法正常工作。我已经尝试了 Stackoverflow 中提供的几乎所有解决方案,但没有一个有效。这是我的活动,它处于正确的 UI 状态:

在播放视频并进入全屏之前

这是我进入全屏的方式:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
    getWindow().getDecorView().setSystemUiVisibility(
             View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
                       // Hide the nav bar and status bar
            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_FULLSCREEN);

这是我退出全屏的方式:

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN
                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);

第一个问题是在全屏模式下状态和导航栏都被正确隐藏。然而,第一次触摸屏幕时,导航栏将可见但不会再次隐藏(我使用的是 Leanback 模式)。可以在这里看到:

全屏第一次触摸后导航栏不会消失

第二个问题是状态栏。当视频完成并退出全屏模式时。状态栏重叠,显示不正确。如下所示:

退出全屏后状态栏不显示


森林海
浏览 123回答 1
1回答

胡说叔叔

所以终于找到了对我有用的答案:private void hideSystemUI() {    getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);    getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);    getWindow().getDecorView().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_STICKY    );}private void showSystemUI() {    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);    getWindow().getDecorView().setSystemUiVisibility(View.VISIBLE);}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java