首页 文章

Xamarin使用透明状态栏形成背景图像

提问于
浏览
1

我一直在尝试在Xamarin Forms中创建以下布局,这是一个带透明状态栏的背景图片:

Image with transparent status bar

我想要一个带有透明状态栏的背景图像,如上图所示 . 我的问题是:

  • 我无法在Android上执行此操作,而在iOS上则很好 . 我试图将我的状态栏设置为透明并以编程方式进行,似乎我的图像只是没有落后于状态栏..我没有在互联网上找到任何有关它的相关信息,只是为了改变它我做过的AppTheme信息但是没有用 .

  • 在iOS上,状态栏文本颜色为黑色,也无法将其更改为白色 .

我花了两周的时间试图找出如何做到但仍然无法做到这一点 . 我应该为此创建一个自定义渲染器吗?或者有更简单的方法吗?

2 回答

  • 0

    您可以使用此解决方案并应用颜色 .

    new Android.Graphics.Color(18, 52, 86, 255) 中,您可以传递 RGBA 颜色 .

    LoadApplication() 之前添加此代码 LoadApplication()

    if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
    {
                Window.DecorView.SystemUiVisibility = 0;
                var statusBarHeightInfo = typeof(FormsAppCompatActivity).GetField("_statusBarHeight", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
                statusBarHeightInfo.SetValue(this, 0);
                Window.SetStatusBarColor(new Android.Graphics.Color(18, 52, 86, 255));
    }
    

    MainActivity 之后的 LoadApplication() 之后添加此代码

    App.Current.On<Xamarin.Forms.PlatformConfiguration.Android>().UseWindowSoftInputModeAdjust(WindowSoftInputModeAdjust.Resize);
    
  • 3

    这看起来像在styles.xml中使用此代码:

    <item name="android:windowTranslucentStatus">true</item>
    

相关问题