所以我发现你可以使用已弃用的代码来使 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;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)