如何使Xamarin应用程序全屏显示(占据整个屏幕)

3

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

适用于Android和iOS。

注意:我不仅想要图片或视频覆盖整个屏幕,而是整个应用程序都应该覆盖整个屏幕。

更新2020-04-29 我找到了一半的解决方案,只针对Android部分(在FabriBertani的帮助下包括状态栏)。我测试过它,它可以很好地工作。现在我必须找到iPhone的解决方案(或者至少找到一种在iPhone上测试的方法)。

2个回答

8
在 Android 中,将以下内容添加到 MainActivity 的 OnCreate 方法中:
this.Window.AddFlags(WindowManagerFlags.Fullscreen);

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

<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>

编辑: 如果你想同时移除工具条,只需在你的XAML页面中添加以下内容:

NavigationPage.HasNavigationBar="False"

或在C#代码后台

public YourPage()
{
    InitializeComponent();

    NavigationPage.SetHasNavigationBar(this, false);
}

如果您想将此内容添加到所有页面中,我建议您创建一个基础页面并在所有页面中使用此基础页面。
public class BaseContentPage : ContentPage
{
    public BaseContentPage
    {
        NavigationPage.SetHasNavigationBar(this, false);
    }
}

并在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>

谢谢!!!在Android上听起来不错,但是模拟器底部仍然有导航按钮(可能是正常的)。让我再过一周左右时间,在真实设备上检查结果(我对Xamarin还很新)。非常感谢此时。我不会忘记你的,如果一切如预期的那样,我会将其标记为正确答案。 - Eric Ouellet
谢谢FabriBertani,我无法删除导航按钮。我以为是因为我在Master-Detail项目中。我创建了另一个简单页面项目。(我还不得不重新安装VS2019,因为我的模拟器停止工作了)。但是,导航仍然始终可见? - Eric Ouellet
我的代码(包括一些测试尝试):http://www.ericouellet.com/dl/alarmclockez.zip - Eric Ouellet
顺便说一下...导航按钮是Android的一部分(3个按钮:三角形,圆形和正方形)。我找不到如何删除那个栏? - Eric Ouellet

5

这只是解决方案的一部分。对于Android:

在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;
});

在共享项目中,进入MainPage构造函数(我把它放在InitializeComponent()后面,但我怀疑这不是必要的):
MessagingCenter.Send<Object>(this, "HideOsNavigationBar");

嗨,很高兴找到解决方案!记得在可以的时候标记它 :-) - Junior Jiang
1
当我找到一种方法来测试它并确保它可以在iOS上运行时,我会将正确的答案标记为最佳答案。 :-) - Eric Ouellet
1
好的,没问题。如果我在iOS上找到了解决方案,我也会在这里分享。 - Junior Jiang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接