如何在.NET MAUI VISUAL STUDIOS 2022中使状态栏完全透明

3

我发现你可以使用已弃用的代码来使 Android 上的状态栏完全透明:

    var s = SystemUiFlags.LayoutFullscreen | SystemUiFlags.LayoutStable;
    FindViewById(Android.Resource.Id.Content).SystemUiVisibility = (StatusBarVisibility)s;
    Window.SetStatusBarColor(Android.Graphics.Color.Transparent);
    WindowInsetsControllerCompat windowInsetsController = new WindowInsetsControllerCompat(Window, Window.DecorView);
    windowInsetsController.AppearanceLightStatusBars = true;

由于此代码已经过时,我该如何实现顶部状态栏完全透明的效果,以匹配屏幕上的任何图片或颜色的背景色。 我正在使用VS 2022中的.NET MAUI。


1
请参见 https://dev59.com/P1EG5IYBdhLWcg3wTJjV。我不会将此问题标记为重复,因为如果您(或任何人)采用其中一个Java答案,并将其重写为C#,那将是很好的。如果您成功了,请在下面添加它作为“您的答案”。 - ToolmakerSteve
1个回答

2

应该在页面上的代码:

protected override void OnAppearing()
{
    base.OnAppearing();
#if ANDROID
    MainActivity.SetStatusBarLight(false);
#endif
}

在MainActivity.cs中的代码

    protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);
    Platform.Init(this, savedInstanceState);

    var s = SystemUiFlags.LayoutFullscreen | SystemUiFlags.LayoutStable;
#pragma warning disable CS0618 // Type or member is obsolete
    FindViewById(Android.Resource.Id.Content).SystemUiVisibility = 
    (StatusBarVisibility)s;
#pragma warning restore CS0618 // Type or member is obsolete
    Window.SetStatusBarColor(Android.Graphics.Color.Transparent);
    WindowInsetsControllerCompat windowInsetsController = new 
    WindowInsetsControllerCompat(Window, Window.DecorView);
    windowInsetsController.AppearanceLightStatusBars = false;

    MainActivityInstance = this;
}

    public static void SetStatusBarLight(bool isLight)
{
    if (MainActivityInstance != null)
    {
        WindowInsetsControllerCompat windowInsetsController =
        new WindowInsetsControllerCompat(MainActivityInstance.Window, MainActivityInstance.Window.DecorView);
        windowInsetsController.AppearanceLightStatusBars = isLight;
    }
}

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