c# - .NET MAUI VISUAL STUDIOS 2022 如何让状态栏全透明

标签 c# android android-actionbar statusbar maui

所以我发现你可以使用 depricated 代码使 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。

最佳答案

应该在页面上的代码:

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;
    }
}

关于c# - .NET MAUI VISUAL STUDIOS 2022 如何让状态栏全透明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72394044/

相关文章:

c# - 解析 JWT 以获取 C# 中的声明

android - 在不使用字符串的情况下从用户那里获取一个字符数组

android - 使用字符串删除SD卡android中的文件

使用 AppCompat 时,Android 的 splitActionBarWhenNarrow 在 Gingerbread 中不起作用

c# - 如何验证输入是否包含有效的 .Net 正则表达式?

c# - Parallel.ForEach 改变多个线程的行为

java - 通过数据库从另一个 Activity 的 ListView 中删除项目

android - 如何在操作栏上显示 Logo

java - 删除菜单 Java Android

C# 使用 Microsoft.Office.Interop.Excel 读取数据