【问题标题】:Hide navigation bar android 6.0 xamarin隐藏导航栏android 6.0 xamarin
【发布时间】:2017-07-23 14:25:34
【问题描述】:

早安, 我正在尝试隐藏我的应用程序 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;

但是当有人向上拖动底部栏时,这只会显示后退按钮。我不希望用户可以看到导航栏。有人可以帮我吗?

谢谢 问候

【问题讨论】:

    标签: c# android xamarin hide


    【解决方案1】:

    这可能会有所帮助 https://stackoverflow.com/a/19201933/4172545

    这是来自链接的答案:

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

    因此,您可以触发事件并在导航栏可见时将其隐藏,方法是再次调用您最初用来隐藏它的代码。

    这里有一个更简洁的写法:

     Window.SetFlags(WindowManagerFlags.Fullscreen, WindowManagerFlags.Fullscreen); 
    
     Window.DecorView.SystemUiVisibility = (StatusBarVisibility) 
                              (SystemUiFlags.LowProfile 
                              | SystemUiFlags.Fullscreen 
                              | SystemUiFlags.HideNavigation
                              | SystemUiFlags.Immersive
                              | SystemUiFlags.ImmersiveSticky);
    

    【讨论】:

    • 嗨 Omar。感谢您的回答,我已尝试在 on create 方法中插入您向我建议的代码,但导航栏仍然出现。出了什么问题?谢谢 andrea
    • 我在我的代码 sn-p 中添加了额外的一行。如果您在 Android 选项中启用了Use Shared Runtime 选项,Xamarin 也会有一个奇怪的错误,有时应用程序不会显示您最新的代码更改。我总是禁用它。只需确保在禁用它后从您正在测试的设备上卸载应用程序并重新部署它。
    • 嗨奥马尔我明天会试试这个,但我很确定我已经这样做了。我在 oncreate 方法下插入你对我说的代码(Window.setflag ....)是够了吗?谢谢
    • 更新:嗨,奥马尔,我尝试了你建议给我的代码,但它不起作用,我试图删除共享运行时,但它不起作用。你能帮我吗?谢谢
    • 让我确保我了解您所拥有的。您的问题是无法隐藏导航栏还是无法隐藏。我发布的代码 sn-p 最初只会隐藏导航栏,如果用户使其可见,则不会处理隐藏它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    • 2018-12-10
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多