【问题标题】:How to make a Xamarin app fullscreen (all screen)如何使 Xamarin 应用全屏(全屏)
【发布时间】:2020-04-20 01:50:53
【问题描述】:

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

适用于 Android 和 iOS。

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

2020 年 4 月 29 日更新 我找到了一半的解决方案,只有 Android 部分(在 FabriBertani 的状态栏帮助下包含在我的答案中)。我测试了它,它工作正常。现在我必须为 iPhone 找到一个解决方案(或者至少,找到一种在 iPhone 上进行测试的方法)。

【问题讨论】:

    标签: c# android ios xamarin fullscreen


    【解决方案1】:

    在 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 的新手)。非常感谢这一刻。我不会忘记你,如果一切都符合预期,我会在测试后标记为好答案。
    • 感谢 FabriBertani,我无法删除导航按钮。我以为是因为我在 Master-Detail 项目中。我用一个简单的页面项目创建了另一个。 (我还不得不重新安装 VS2019,因为我的模拟器停止工作)。但是,导航仍然一直可见???
    • 我的代码(包括一些测试尝试):ericouellet.com/dl/alarmclockez.zip
    • 顺便说一句...导航按钮是 Android 的一部分(3 个按钮:三角形、圆形和方形)。我找不到如何删除那个栏???
    【解决方案2】:

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

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

    【讨论】:

    • 嗨,很高兴找到解决方案!记得在可以的时候标记它:-)
    • 当我找到一种在 iOS 上测试它并确保它有效的方法时,我会将正确的答案标记为好答案。 :-)
    • 太好了,没关系。如果在iOS中找到解决方案,以后也会在这里分享。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多