Android:如何强制导航栏在三星Galaxy S8上可见

2022-09-02 14:10:18

是否可以强制应用始终显示在 Android 应用中的导航栏?在三星Galaxy S8上,用户可以在“运行时”期间隐藏导航栏 - 这会导致应用程序中出现一些意外行为(如果您有兴趣;我试图添加一个setOnSystemUiVisibilityChangeListener,并在视图上重新绘制,无效,请求Layout和forceLayout,但没有运气。重新启动活动不适用,因为应用是单活动应用。我也看过WindowInsets,也没有运气。

因此,我只想通过不允许用户删除导航栏来避免此问题。我在网上找到的所有资源都是用于隐藏导航栏的。有没有人对如何让它留下来有什么建议?


答案 1

我不太确定三星S8,但我曾在三星S7上工作过。我使用靠背模式并通过了这两个标志setSystemUiVisibility()

1.
2.
同样为了启用沉浸式模式,我一起使用了。SYSTEM_UI_FLAG_FULLSCREENSYSTEM_UI_FLAG_HIDE_NAVIGATIONSYSTEM_UI_FLAG_IMMERSIVE

它是从可见性沉浸式中引用的。

如果我错了,或者我不明白这个问题,请纠正我。


答案 2

这对我有用:

        getWindow().getDecorView().setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_IMMERSIVE
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);

推荐