You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在.NET MAUI中设置Shell应用栏为透明?

在.NET MAUI Shell中设置透明导航栏的方法

只设置Shell.BackgroundColor为透明通常不够,需要结合Shell的专属导航栏属性以及各平台的原生配置,以下是具体实现步骤:

1. 基础Shell配置

在XAML的Shell标签中,设置以下核心属性:

<Shell
    x:Class="YourAppName.AppShell"
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    Shell.BackgroundColor="Transparent"
    Shell.NavigationBarColor="Transparent"
    Shell.NavBarHasShadow="False"
    Shell.NavigationBarIsTranslucent="True">
    <!-- 你的Shell页面内容 -->
</Shell>
  • Shell.NavigationBarColor:直接指定导航栏背景色为透明
  • Shell.NavBarHasShadow:移除导航栏底部的阴影线,让透明效果更自然
  • Shell.NavigationBarIsTranslucent:允许页面内容延伸到导航栏下方(按需开启)

2. 平台专属配置

Android平台

打开Platforms/Android/MainActivity.cs,在OnCreate方法中补充代码:

protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);
    // 设置导航栏完全透明
    Window.SetNavigationBarColor(Android.Graphics.Color.Transparent);
    // 允许页面布局延伸到导航栏区域(需要内容穿透时启用)
    Window.SetFlags(Android.Views.WindowManagerFlags.LayoutNoLimits, Android.Views.WindowManagerFlags.LayoutNoLimits);
    // 可选:设置导航栏图标为浅色/深色,避免透明背景下不可见
    Window.DecorView.SystemUiVisibility = Android.Views.StatusBarVisibility.LightNavigationBar;
}

iOS平台

打开Platforms/iOS/AppDelegate.cs,在FinishedLaunching方法中添加代码:

public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
    global::Xamarin.Forms.Forms.Init();
    LoadApplication(new App());

    // 移除导航栏背景和阴影
    UINavigationBar.Appearance.BackgroundColor = UIColor.Clear;
    UINavigationBar.Appearance.ShadowImage = new UIImage();
    UINavigationBar.Appearance.SetBackgroundImage(new UIImage(), UIBarMetrics.Default);
    // 可选:设置导航栏文字/图标颜色
    UINavigationBar.Appearance.TintColor = UIColor.Black;

    return base.FinishedLaunching(app, options);
}

Windows平台

Windows平台通常只需Shell的XAML配置即可生效,若出现内容遮挡问题,可在Platforms/Windows/App.xaml.cs中补充:

protected override void OnLaunched(LaunchActivatedEventArgs args)
{
    base.OnLaunched(args);
    var currentWindow = Application.Current.Windows.FirstOrDefault();
    if (currentWindow != null)
    {
        var nativeWindow = currentWindow.Handler.NativeView as Microsoft.UI.Xaml.Window;
        nativeWindow.ExtendsContentIntoTitleBar = true;
        nativeWindow.TitleBar.BackgroundColor = Microsoft.UI.Colors.Transparent;
        nativeWindow.TitleBar.ButtonBackgroundColor = Microsoft.UI.Colors.Transparent;
    }
}

完成以上配置后,Shell的导航栏即可呈现完全透明的效果。

内容的提问来源于stack exchange,提问作者Markiian Khylynskyi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 18:43:12