c# - Xamarin.Forms - 如何使导航/系统栏在 iOS 和 Android 上透明

标签 c# xamarin xamarin.forms cross-platform

我正在 Xamarin.Forms 中为 iOS 和 Android 构建一个应用程序,我们的设计要求顶部导航、系统栏和屏幕底部的 Android 系统导航栏是透明的。下面是一个屏幕的模型,给你一个想法。 我们希望背景图片填满整个屏幕。

Home screen mockup

我是一个非常新的开发人员,所以如果我错了请纠正我,但这种 UI 实现似乎是特定于平台的,我正在努力寻找我应该如何在我的跨平台项目。

在过去的几天里,我一直在做大量的研究来解决这个问题,但作为一名 Xamarin 经验有限的开发人员,我很难对如何解决这个问题有一个可靠的想法。 您将如何在 Xamarin.Forms 中创建满足这些要求的 UI?

我是否需要为我正在使用的页面创建自定义渲染器?此 UI 是否属于过于自定义而不适用于 Xamarin.Forms 的类别?

如果您能在此处提供任何见解,我们将不胜感激。提前感谢您的宝贵时间。

最佳答案

非常感谢@SuavePirate 的回答。它让我走上了正确的轨道,并且通过进一步的研究,我能够找到解决我的问题的解决方案。

去除主导航页面上的导航栏:

HomeScreen.xaml.cs 中,我将这一行添加到类构造函数中:

NavigationPage.SetHasNavigationBar(this, false);

要使导航栏透明:

我使用此代码在 App.xaml.cs 中创建主页

MainPage = new NavigationPage(new HomeScreen())
{
    BarBackgroundColor = Color.Transparent
};

要在 Android 上使状态栏透明:

在 .Droid 项目的 MainActivity.csOnCreate 中,我在 LoadApplication(new App()); 之前添加了这些行;

Window.AddFlags(WindowManagerFlags.TranslucentNavigation);
Window.SetBackgroundDrawableResource(Resource.Drawable.MyBackgroundPNG);
SetStatusBarColor(Android.Graphics.Color.Transparent);

当我弄清楚如何让它在那里工作时,我会添加 iOS 代码。 :)

关于c# - Xamarin.Forms - 如何使导航/系统栏在 iOS 和 Android 上透明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41862456/

相关文章:

c# - Xamarin iOS - MVVMCross : Unable to connect button in custom cell with command in ViewModel

xamarin.forms - 如何在 xamarin.forms 中获取状态栏高度?

xamarin.forms - 如何在 Xamarin Forms 中水平展开标签

c# - Xamarin forms Picker on android更改取消文本

c# - CheckBox IsChecked 和 IsMouseOver

c# - 如何在 MVVM 中启动非模态对话框?

c# - Xamarin中传递RelayCommand参数

android - 我可以在 64 位 Windows 10 上创建基于 x86 的 Android 虚拟设备 (AVD) 吗?如果是这样怎么办?

c# - 使用 ExecuteSqlCommand 调用存储过程(需要未提供的参数)

c# - 多目标 .net core 2.2 和 .net 4.6.1