簡體   English   中英

在Xamarin.Forms中刪除狀態欄背景

[英]Remove the status bar background in Xamarin.Forms

我試圖在Xamarin.Forms中構建一個全屏應用程序,以同時針對Android和iOS。 我知道如何在以前的應用程序中隱藏iOS中的狀態欄,但在Android中卻很難。 我嘗試通過將應用程序主題設置為

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

無濟於事,以及使用

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

仍然留下不同顏色的狀態欄減去所有信息。 但這使設計中斷了,而且我似乎無法在任何地方在線找到任何答案。

如果您使用的是AppCompat,則這是一個已知問題,因為Forms向狀態欄添加了一個下標,即使系統圖標被隱藏,該下標仍會保留。 幸運的是,應該在下一個Forms預發行版中添加一個API來解決此問題: https : //bugzilla.xamarin.com/show_bug.cgi?id=38019

同時,您可以嘗試使用反射將參考視圖的高度設置為0。在調用base.OnCreate()之后,請執行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);
}

如果您沒有找到解決方案,這里不是很確定隱藏狀態欄,但是如果我記得正確的話,添加NavigationPage.SetHasNavigationBar(this, false); 對我來說,編寫背后的代碼是解決方案。

如果要更改顏色,只需添加幾行即可。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM