【问题标题】:Android: How to force navigation bar to be visible on Samsung Galaxy S8Android:如何强制导航栏在三星 Galaxy S8 上可见
【发布时间】:2018-10-01 21:20:08
【问题描述】:

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

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

【问题讨论】:

  • 这有什么好运气吗? s8 的导航栏弄乱了很多人的应用程序。包括我的。在用户无法自行切换的情况下强制它始终关闭或打开会很好。
  • 不,很遗憾不是...我同意!
  • 我在这个 Christopher 上取得了进展。我想出了如何禁用切换,但这并不意味着用户无法显示导航栏。他们可以向上滑动它,但它不会固定。此外,如果您的 UI 变得混乱,唯一的解决方案是添加侦听器并重新调整(测量)视图并相应地定位事物。这对我的应用程序来说如此麻烦的原因是因为我使用了很多依赖 y 线的动画。该 y 线需要是动态的,具体取决于导航栏是否存在。
  • 噢,太好了!让它不粘是一个非常好的解决方案!你介意解释一下你做了什么吗?
  • 克里斯托弗在这里看这篇文章。可以定制 DecorView 的 systemUiVisibility 选项以禁用固定导航栏的功能。它的作用类似于虚拟键盘启动并且不会显示 pin 选项。 stackoverflow.com/questions/38254127/…

标签: java android android-navigation-bar


【解决方案1】:

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

1.SYSTEM_UI_FLAG_FULLSCREEN
2.SYSTEM_UI_FLAG_HIDE_NAVIGATION
另外为了启用沉浸式模式,我结合使用了SYSTEM_UI_FLAG_IMMERSIVE

引用自visibility & 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-14
      • 1970-01-01
      • 2018-06-26
      • 2018-03-23
      • 1970-01-01
      • 1970-01-01
      • 2018-09-06
      相关资源
      最近更新 更多