早安, 我试图隐藏我的应用程序android上的导航栏。我有设备管理员权限,我已经创建了我的自助服务终端应用程序,但我需要隐藏导航栏。在这一刻我没有主页按钮,但我有后退按钮。如果我按它平板电脑说你不能退出设备管理员的应用程序。阻止吧我使用这个
startlocktask()
我试过过devicePolicyManager.SetStatusBarDisabled() 但这个隐藏状态不在家
我有隐藏导航栏的代码
View decorView = Window.DecorView;
var uiOptions = (int)decorView.SystemUiVisibility;
var newUiOptions = (int)uiOptions;
newUiOptions |= (int)SystemUiFlags.LowProfile;
newUiOptions |= (int)SystemUiFlags.Fullscreen;
newUiOptions |= (int)SystemUiFlags.HideNavigation;
newUiOptions |= (int)SystemUiFlags.Immersive;
newUiOptions |= (int)SystemUiFlags.ImmersiveSticky;
decorView.SystemUiVisibility = (StatusBarVisibility)newUiOptions;
但是当有人向上拖动底部栏时,它只显示后退按钮。我不希望用户可以看到导航栏。有人能帮助我吗?
感谢 问候
答案 0 :(得分:0)
这可能会有所帮助 https://stackoverflow.com/a/19201933/4172545
这是链接的答案:
好的,如果有人有兴趣,我已经通过这种方式解决了我的问题:为窗口管理器添加了透明视图,宽度为1px,match_parent高度为1px。然后在此视图中添加了一个全局布局侦听器,每当布局发生更改时,我都会在屏幕上检查此视图的位置。如果它的Y为0,则状态栏不可见,因此必须运行全屏应用程序。这比本机View.OnSystemUiVisibilityChangeListener更好用,因为似乎有些应用程序不知何故不会触发该方法(如新的雅虎天气)。
因此,您可以触发事件,当导航栏可见时,通过再次调用您最初用于隐藏它的代码来隐藏它。
这是一个更简洁的方式来编写它:
Window.SetFlags(WindowManagerFlags.Fullscreen, WindowManagerFlags.Fullscreen);
Window.DecorView.SystemUiVisibility = (StatusBarVisibility)
(SystemUiFlags.LowProfile
| SystemUiFlags.Fullscreen
| SystemUiFlags.HideNavigation
| SystemUiFlags.Immersive
| SystemUiFlags.ImmersiveSticky);