【发布时间】:2020-03-04 17:47:46
【问题描述】:
现在,在有人将问题标记为重复之前,请仔细阅读问题。我已经尝试了 Stack Overflow 上的每一个当前答案。
一般来说,我想知道如何检测用户设备屏幕底部是否存在软导航栏。
现在,
1)我看到一个答案,人们检查最大屏幕尺寸,查看正在显示的应用程序/活动,然后根据结果确定是否有软导航栏。这对于带有缺口的设备来说是不可靠的。
2) 我不想知道是否有硬件导航栏。软导航栏是必须的,因为:
一个。在我的实际设备中,没有硬件导航栏,也没有软导航栏。现在有几款手机使用手势导航。
b.但是在我的模拟器中,有导航栏。有软导航栏。
为了隐藏它们,我使用以下代码:
int uiOptionsForDevicesWithoutNavBar = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
decorView.setSystemUiVisibility(uiOptionsForDevicesWithoutNavBar);
现在,这就像一个魅力。 Waalaa,导航栏被隐藏。但是我的实际手机出现了问题。 它使用手势。在我第一次滑动返回时,会出现通知栏,然后在下一次立即滑动返回时,会执行所需的返回操作。
但如果我这样做:
int uiOptionsForDevicesWithoutNavBar = View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
decorView.setSystemUiVisibility(uiOptionsForDevicesWithoutNavBar);
然后它在我的物理设备上正常工作,但导航栏没有在模拟器上隐藏,这很明显,因为隐藏它的主标志不存在。
所以我想根据设备是否有屏幕软导航栏,为不同类型的手机运行不同的标志。
因此,我想知道如何检测屏幕上是否有软导航栏。
另外,如果有更好的方法,请帮助我。
【问题讨论】:
-
来吧,说真的....没有解决办法吗?我见过很多游戏都可以毫无问题地顺利完成......T_T............
标签: java android android-studio