Android:如何强制在三星Galaxy S8上显示导航栏

20

有没有办法在Android应用程序中强制始终显示导航栏?在Samsung Galaxy S8上,用户可以在“运行时”隐藏导航栏-这会导致应用程序出现一些意外的行为(如果您感兴趣;我尝试添加setOnSystemUiVisibilityChangeListener并且使用redraw、invalidate、requestLayout和forceLayout重新绘制视图,但没有成功。由于该应用程序是单个活动应用程序,因此重新启动活动不适用。 我还查看了WindowInsets,但也没有找到解决方案)。

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


1
这个问题有什么进展吗?S8的导航栏正在破坏很多人的应用程序,包括我的。强制它始终关闭或打开,并防止用户自行切换将是不错的选择。 - portfoliobuilder
不,很遗憾不能... 我同意! - Dambakk
2
我在这个问题上取得了进展,Christopher。我找到了如何禁用切换的方法,但这并不意味着用户无法显示导航栏。他们可以向上滑动它,但它不会固定。此外,如果您的UI出现问题,看起来唯一的解决方案是添加监听器并重新调整(测量)视图和位置。对于我的应用程序来说,这是如此麻烦的原因是我使用了很多依赖于y-cord的动画。该y-cord需要根据导航栏是否存在而动态变化。 - portfoliobuilder
哦,不错!让它不粘是一个完美的解决方案!你介意解释一下你做了什么吗? - Dambakk
Christopher,请看这里的帖子。DecorView的systemUiVisibility选项可以定制以禁用固定导航栏的功能。它的行为类似于虚拟键盘弹出时,固定选项将不会显示。https://dev59.com/3loT5IYBdhLWcg3wtBRz - portfoliobuilder
我发现对话模式可以隐藏固定或取消固定图标,而支付宝和微信也这样做了。 - drakeet
2个回答

1
我对三星S8不是很确定,但我曾经使用过三星S7。我使用了倾斜模式setSystemUiVisibility()并传递了以下两个标志:
1.SYSTEM_UI_FLAG_FULLSCREEN
2.SYSTEM_UI_FLAG_HIDE_NAVIGATION
此外,为了启用沉浸式模式,我还使用了SYSTEM_UI_FLAG_IMMERSIVE
这些内容参考自visibilityimmersive
如果我理解有误或者没有理解问题,请纠正我。

0
这对我有用:
        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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接