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

时间:2017-05-29 11:30:59

标签: c# xaml xamarin xamarin.forms

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

Image with transparent status bar

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

  1. 我无法在Android上执行此操作,而在iOS上则不错。我已尝试将状态栏设置为透明并以编程方式进行,似乎我的图片不会落后于状态栏...我没有在互联网上找到任何相关信息它,只是为了改变我所做的但没有工作的AppTheme信息。

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

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

2 个答案:

答案 0 :(得分:3)

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

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

LoadApplication()

中的MainActivity之前添加此代码
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));
}

LoadApplication()

中的MainActivity之后添加此代码
App.Current.On<Xamarin.Forms.PlatformConfiguration.Android>().UseWindowSoftInputModeAdjust(WindowSoftInputModeAdjust.Resize);

答案 1 :(得分:1)

这似乎是在styles.xml中使用此代码:

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