.NET MAUI 透明状态栏

6
如何使用.NET MAUI在Android上使状态栏透明并显示其后面的内容?
我看到了这个帖子,是否有用C#重新创建它的方法?
类似于Google地图: enter image description here

这个问题可以帮助你:https://dev59.com/ZsTra4cB1Zd3GeqP83ta - Zack
2个回答

6

尝试在MauiProgram.cs中使用此代码:

    .ConfigureLifecycleEvents(events =>
            {
#if ANDROID
                events.AddAndroid(android => android.OnCreate((activity, bundle) => MakeStatusBarTranslucent(activity)));

                static void MakeStatusBarTranslucent(Android.App.Activity activity)
                {
                    activity.Window.SetFlags(Android.Views.WindowManagerFlags.LayoutNoLimits, Android.Views.WindowManagerFlags.LayoutNoLimits);

                    activity.Window.ClearFlags(Android.Views.WindowManagerFlags.TranslucentStatus);

                    activity.Window.SetStatusBarColor(Android.Graphics.Color.Transparent);
                }
#endif
            });

enter image description here


3
安装版本为1.3.0+的CommunityToolkit.Maui,Gerald在YT:上也有相关视频。然后在您的ContentPage中执行以下操作:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:mct="clr-namespace:CommunityToolkit.Maui.Behaviors;assembly=CommunityToolkit.Maui"
             x:Class="MauiToolkitStatusBarBehaviorSample.MainPage">

<Page.Behaviors>
    <mct:StatusBarBehavior StatusBarColor="Transparent" StatusBarStyle="LightContent" />
</Page.Behaviors>

对于其他页面,您可能需要重新设置它,因为这种行为有些全局性,可能会影响其他页面。

仅供参考:StatusBarBehavios存在缺陷,在更改设备方向时无法正常工作,而在页面之间更改背景颜色时也会表现出奇怪的行为。 - Julian
@ewerspej 是吗?也许我会尝试添加一个修复,谢谢 :) - FreakyAli
是的,这个问题已经有一个错误报告了:https://github.com/CommunityToolkit/Maui/issues/637 - Julian
那已经关闭了。 - FreakyAli
是的,目前已经修复了,但它只会在下一个版本中发布。 - Julian
你解决了这个问题吗?似乎StatusBarColor="Transparent"不能与图像作为背景一起使用。 - BlueOceans1st

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