Maui全屏显示

Maui全屏显示

  1. 安卓
    安卓10以上系统,在MainActivity.cs文件中重写OnCreate方法。参考安卓官方文档

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
     protected override void OnCreate(Bundle? savedInstanceState)
     {
         base.OnCreate(savedInstanceState);
         WindowInsetsControllerCompat windowInsetsController = WindowCompat.GetInsetsController(Window, Window.DecorView);
         // 设置从上下滑动显示状态栏的行为
         windowInsetsController.SystemBarsBehavior = WindowInsetsControllerCompat.BehaviorShowTransientBarsBySwipe;
         // 隐藏状态栏
         windowInsetsController.Hide(WindowInsetsCompat.Type.SystemBars());
     }
    

    安卓12系统,在MainActivity.cs文件中重写OnCreate方法。

    1
    2
    3
    4
    5
    6
    7
    8
    
     protected override void OnCreate(Bundle? savedInstanceState)
     {
         base.OnCreate(savedInstanceState);
         // 全屏显示(会隐藏顶部状态栏但是无法隐藏底部导航栏)
         Window.SetFlags(WindowManagerFlags.Fullscreen, WindowManagerFlags.Fullscreen);
         // 隐藏底部导航栏(可以通过从下向上滑动显示导航栏)
         Window.DecorView.SystemUiFlags = SystemUiFlags.HideNavigation;
     }
    

    MainActivity.cs文件中添加如下代码。如不需要显示下部的导航条可以在设置-无障碍-开启隐藏状态栏(安卓10)。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    
    private void SetWindowLayout()
            {
                if (Window != null)
                {
                    if (Build.VERSION.SdkInt >= BuildVersionCodes.R)
                    {
    #pragma warning disable CA1416
    
                        IWindowInsetsController wicController = Window.InsetsController;
    
    
                        Window.SetDecorFitsSystemWindows(false);
                        Window.SetFlags(WindowManagerFlags.Fullscreen, WindowManagerFlags.Fullscreen);
    
                        if (wicController != null)
                        {
                            wicController.Hide(WindowInsets.Type.Ime());
                            wicController.Hide(WindowInsets.Type.NavigationBars());
                            wicController.Hide(WindowInsets.Type.SystemOverlays());
                            wicController.Hide(WindowInsets.Type.StatusBars());
                            wicController.Hide(WindowInsets.Type.MandatorySystemGestures());
                            wicController.Hide(WindowInsets.Type.CaptionBar());
                        }
    #pragma warning restore CA1416
                    }
                    else
                    {
    #pragma warning disable CS0618
    
                        Window.SetFlags(WindowManagerFlags.Fullscreen, WindowManagerFlags.Fullscreen);
    
                        Window.DecorView.SystemUiVisibility = (StatusBarVisibility)(SystemUiFlags.Fullscreen |
                                                                                     SystemUiFlags.HideNavigation |
                                                                                     SystemUiFlags.Immersive |
                                                                                     SystemUiFlags.ImmersiveSticky |
                                                                                     SystemUiFlags.LayoutHideNavigation |
                                                                                     SystemUiFlags.LayoutStable |
                                                                                     SystemUiFlags.LowProfile);
    #pragma warning restore CS0618
                    }
                }
            }
    
            protected override void OnCreate(
                Bundle bSavedInstanceState)
            {
                base.OnCreate(bSavedInstanceState);
                SetWindowLayout();
            }
    
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    
        protected override void OnCreate(
                Bundle bSavedInstanceState)
        {
            base.OnCreate(bSavedInstanceState);
            SetWindowLayout();
            //if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.R)
            //{
            //    Window.SetDecorFitsSystemWindows(false);
            //    var windowInsetsController = Window.DecorView.WindowInsetsController;
            //    if (windowInsetsController != null)
            //    {
            //        windowInsetsController.Hide(WindowInsetsCompat.Type.NavigationBars());
            //    }
            //}
            //else
            //{
            //    var uiOptions = SystemUiFlags.HideNavigation;
            //    Window.DecorView.SystemUiFlags = SystemUiFlags.HideNavigation;// (StatusBarVisibility)uiOptions;
            //}
        }
    
        private void SetWindowLayout()
        {
            if (Window != null)
            {
                if (Build.VERSION.SdkInt >= BuildVersionCodes.R)
                {
    #pragma warning disable CA1416
    
                    IWindowInsetsController wicController = Window.InsetsController;
    
    
                    Window.SetDecorFitsSystemWindows(false);
                    Window.SetFlags(WindowManagerFlags.Fullscreen, WindowManagerFlags.Fullscreen);
    
                    if (wicController != null)
                    {
                        wicController.Hide(WindowInsets.Type.Ime());
                        wicController.Hide(WindowInsets.Type.NavigationBars());
                        //wicController.Hide(WindowInsets.Type.SystemOverlays());
                        wicController.Hide(WindowInsets.Type.StatusBars());
                        wicController.Hide(WindowInsets.Type.MandatorySystemGestures());
                        wicController.Hide(WindowInsets.Type.CaptionBar());
                    }
    #pragma warning restore CA1416
                }
                else
                {
    #pragma warning disable CS0618
    // 界面有任何变化时都重新设置全屏
                    Window.DecorView.SystemUiVisibilityChange += DecorView_SystemUiVisibilityChange;
                    Window.SetFlags(WindowManagerFlags.Fullscreen, WindowManagerFlags.Fullscreen);
    
                    Window.DecorView.SystemUiFlags = (/*SystemUiFlags.Fullscreen | */SystemUiFlags.HideNavigation /*| SystemUiFlags.Immersive | SystemUiFlags.ImmersiveSticky *//*| SystemUiFlags.LayoutHideNavigation*/ /*| SystemUiFlags.LayoutStable | SystemUiFlags.LowProfile*/);
    #pragma warning restore CS0618
                }
            }
        }
    
        private void DecorView_SystemUiVisibilityChange(object? sender, Android.Views.View.SystemUiVisibilityChangeEventArgs e)
        {
            Window.SetFlags(WindowManagerFlags.Fullscreen, WindowManagerFlags.Fullscreen);
            Window.DecorView.SystemUiFlags = (/*SystemUiFlags.Fullscreen | */SystemUiFlags.HideNavigation /*| SystemUiFlags.Immersive | SystemUiFlags.ImmersiveSticky*/ /*| SystemUiFlags.LayoutHideNavigation | SystemUiFlags.LayoutStable*/ /*| SystemUiFlags.LowProfile*/);
        }
    
  2. Windows

Licensed under CC BY-NC-SA 4.0
Built with Hugo
Theme Stack designed by Jimmy