2017-03-03 89 views
1

Goodmorning, 我想隐藏我的应用程序android上的导航栏。我有设备管理员权限,我已经创建了我的自助服务终端应用,但我需要隐藏导航栏。在这一刻,我没有主页按钮,但我有后退按钮。如果我按它的平板电脑说你不能退出设备管理员的应用程序。阻止我用了吧这个隐藏导航栏安卓6.0 xamarin

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

这可能有助于 https://stackoverflow.com/a/19201933/4172545

这是从链接答案:

好吧,如果有人有兴趣,我已经解决了我的问题是这样的:为窗口管理器添加了一个透明视图,宽度为1px,高度为match_parent。然后在这个视图中添加一个全局布局监听器,每当布局发生变化时,我都会在屏幕上检查这个视图的位置。如果Y为0,则状态栏不可见,所以全屏应用程序必须正在运行。这比原生View.OnSystemUiVisibilityChangeListener更有效,因为它似乎有一些应用程序不会触发该方法(如新的yahoo天气)。

因此,你可以有一个事件触发,当导航栏是可见的隐藏它,再次调用你的代码,你最初用来隐藏它。

这里是写了一点更简洁的方式:

Window.SetFlags(WindowManagerFlags.Fullscreen, WindowManagerFlags.Fullscreen); 

Window.DecorView.SystemUiVisibility = (StatusBarVisibility) 
          (SystemUiFlags.LowProfile 
          | SystemUiFlags.Fullscreen 
          | SystemUiFlags.HideNavigation 
          | SystemUiFlags.Immersive 
          | SystemUiFlags.ImmersiveSticky); 
+0

喜Omar.thanks的答案,我试图插入ü建议我在上创建方法的代码,但导航栏仍然出现。有什么不对?谢谢 andrea –

+0

我在代码片段中增加了一行。如果您在Android选项中启用“使用共享运行时”选项,Xamarin也会有一个奇怪的错误,有时候该应用程序不会显示您最新的代码更改。我总是禁用它。只要确保禁用它后,即可从正在测试的设备上卸载应用程序并重新部署该应用程序。 –

+0

HI奥马尔我会明天尝试这个,但我很确定我已经做到了。我插入你在oncreate方法(Window.setflag ....)下对我说的代码就够了吗?谢谢 –