我正在尝试在Xamarin.Forms中构建一个全屏应用,以同时针对Android和iOS。我知道如何在以前的应用程序中隐藏iOS中的状态栏,但我在Android中遇到困难。我试过通过将应用程序主题设置为
来尝试这样做 @android:style/Theme.Holo.NoActionBar.Fullscreen
无效,以及使用
设置UI标志this.Window.AddFlags(WindowManagerFlags.Fullscreen);
this.Window.DecorView.SystemUiVisibility = StatusBarVisibility.Hidden;
仍然会留下不同颜色的状态栏减去所有信息。但它抛弃了设计,我似乎无法在任何地方找到任何答案。
答案 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);
添加到代码后面是我的解决方案。
如果你想改变颜色,你只需要添加几行。
<item name="android:statusBarColor">@color/blue</item>
添加到styles.xml文件Window.AddFlags(WindowManagerFlags.DrawsSystemBarBackgrounds);
添加到MainActivity.cs