如何使 Xamarin 应用程序全屏(全屏)

Eri*_*let 3 c# android fullscreen ios xamarin

我使用 Xamarin 4.5 进行开发,但无法找到如何让我的应用程序覆盖整个屏幕(全屏)。

适用于 Android 和 iOS。

注意:我不希望只有图像或视频覆盖整个屏幕,它应该是所有应用程序都应该覆盖整个屏幕。

更新2020-04-29 我找到了一半的解决方案,只有Android部分(在状态栏FabriBertani的帮助下包含在我的答案中)。我测试了一下,效果很好。现在我必须找到针对 iPhone 的解决方案(或者至少找到一种在 iPhone 上进行测试的方法)。

Fab*_*ani 8

在 Android 上,将其添加到OnCreateMainActivity 的方法中:

this.Window.AddFlags(WindowManagerFlags.Fullscreen);
Run Code Online (Sandbox Code Playgroud)

对于 iOS,将这些值添加到info.plist文件中:

<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
Run Code Online (Sandbox Code Playgroud)

编辑:如果您也想删除工具栏,只需将其添加到您的 xaml 页面上:

NavigationPage.HasNavigationBar="False"
Run Code Online (Sandbox Code Playgroud)

或者在C#代码后面

public YourPage()
{
    InitializeComponent();

    NavigationPage.SetHasNavigationBar(this, false);
}
Run Code Online (Sandbox Code Playgroud)

如果您想将其添加到所有页面,我建议您使用此创建一个基本页面,然后在所有页面中使用此基本页面。

public class BaseContentPage : ContentPage
{
    public BaseContentPage
    {
        NavigationPage.SetHasNavigationBar(this, false);
    }
}
Run Code Online (Sandbox Code Playgroud)

并在 xaml 上使用它:

<?xml version="1.0" encoding="UTF-8"?>
<local:BaseContentPage
    xmlns="http://xamarin.com/schemas/2014/forms"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:local="clr-namespace:YourNamespace.Pages"
    x:Class="YourNamespace.Pages.YourPage">
</local:BaseContentPage>
Run Code Online (Sandbox Code Playgroud)


Eri*_*let 5

这是解决方案的一半。对于安卓:

在Android项目中。进入MainActivity.OnCreate,添加:

this.Window.AddFlags(WindowManagerFlags.Fullscreen); // Hide StatusBar, from FabriBertani

MessagingCenter.Subscribe<Object>(this, "HideOsNavigationBar", (sender) => 
{
  int uiOptions = (int)Window.DecorView.SystemUiVisibility;
  uiOptions |= (int)SystemUiFlags.HideNavigation;
  Window.DecorView.SystemUiVisibility = (StatusBarVisibility) SystemUiFlags.HideNavigation;
});
Run Code Online (Sandbox Code Playgroud)

在共享项目中。进入 MainPage 构造函数(我将其放在 InitializeComponent() 之后,但我怀疑这是必要的):

MessagingCenter.Send<Object>(this, "HideOsNavigationBar");
Run Code Online (Sandbox Code Playgroud)