我最近在我的应用程序中添加了以下代码,以删除某些手机上的导航栏(软按钮)。这导致我的应用程序出现了一些调整大小的问题,因此摆脱导航栏是理想的。
getWindow().requestFeature(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);更多信息请访问:https://developer.android.com/training/system-ui/navigation.html
这就是我想要的。软按钮不再出现在Nexus 5等设备上。但是,这会导致禁用和触摸或手势的副作用,直到至少出现一个触摸事件。例如,我在主屏幕上有一些按钮。使用上面的代码,第一次点击按钮不会做任何事情。从第二次开始,应用程序就会正常运行。我的应用程序也使用viewpager,滑动到其他标签或从操作栏中选择另一个标签也没有效果,直到我先点击屏幕上的某个地方。
显然,这种行为是不受欢迎的。当用户打开应用程序并选择其中一个按钮时,他们希望该按钮被单击。取而代之的是,他们必须轻敲两次按钮(然后一切都会正常工作)。
我在三星Galaxy S3 (底部没有导航栏)和Nexus5(底部有导航栏)上测试了这一点。
编辑:进一步研究-隐藏导航栏只是暂时的。导航栏请求第一个触摸事件的焦点,因为导航栏的目的是在出现任何类型的ui事件时立即弹出。因此,即使是在一开始就没有导航栏的Galaxy S3上,触摸事件也会被导航栏吸收。对于确实有导航栏的设备,导航栏将在每次交互时重新出现,您必须告诉设备再次隐藏它。据我所知,没有办法永久隐藏导航栏。
我的下一个问题是了解如何查询设备以查看是否有导航栏。如果我知道设备没有导航栏,那么就没有必要试图隐藏导航栏,让操作系统吸收第一次触摸事件。
发布于 2015-02-14 06:38:30
SYSTEM_UI_FLAG_HIDE_NAVIGATION是为被动的活动而设计的,比如看视频或者看书。出于您的目的,沉浸式模式是更好的选择。https://developer.android.com/training/system-ui/immersive.html
更具体地说,您可能希望将SYSTEM_UI_FLAG_IMMERSIVE_STICKY标志与SYSTEM_UI_FLAG_HIDE_NAVIGATION一起添加,这样导航栏将被隐藏,并且将保持隐藏状态,直到用户从顶部或底部滑动。
请注意,当用户第一次在您的应用程序中进入此模式时,将出现一个“提醒气泡”。
https://stackoverflow.com/questions/28508601
复制相似问题