删除Xamarin.Forms中的状态栏背景

时间:2016-10-11 04:06:13

标签: android xamarin xamarin.android xamarin.forms

我正在尝试在Xamarin.Forms中构建一个全屏应用,以同时针对Android和iOS。我知道如何在以前的应用程序中隐藏iOS中的状态栏,但我在Android中遇到困难。我试过通过将应用程序主题设置为

来尝试这样做

@android:style/Theme.Holo.NoActionBar.Fullscreen

无效,以及使用

设置UI标志
this.Window.AddFlags(WindowManagerFlags.Fullscreen);
this.Window.DecorView.SystemUiVisibility = StatusBarVisibility.Hidden;

仍然会留下不同颜色的状态栏减去所有信息。但它抛弃了设计,我似乎无法在任何地方找到任何答案。

2 个答案:

答案 0 :(得分:0)

如果您正在使用AppCompat,那么这是一个已知问题,因为Forms会在状态栏中添加一个参考底图,即使系统图标被隐藏也会保留。幸运的是,应该在下一个Forms预发行版中添加一个API来解决这个问题:https://bugzilla.xamarin.com/show_bug.cgi?id=38019

在此期间,您可以尝试使用反射将底层视图的高度设置为0.调用base.OnCreate()后执行:

this.Window.AddFlags(WindowManagerFlags.Fullscreen);
this.Window.DecorView.SystemUiVisibility = StatusBarVisibility.Hidden;

if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
{
    var statusBarHeightInfo = typeof(FormsAppCompatActivity).GetField("_statusBarHeight",  System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
    statusBarHeightInfo.SetValue(this, 0);
}

答案 1 :(得分:-1)

如果您还没有找到解决方案,请点击此处 我不太确定隐藏状态栏但是如果我记得它正确地将NavigationPage.SetHasNavigationBar(this, false);添加到代码后面是我的解决方案。

如果你想改变颜色,你只需要添加几行。

  1. <item name="android:statusBarColor">@color/blue</item>添加到styles.xml文件
  2. 并将Window.AddFlags(WindowManagerFlags.DrawsSystemBarBackgrounds);添加到MainActivity.cs
  3. 中的OnCreate方法