![](/img/trans.png)
[英]Change Status Bar color during runtime on android in 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);
對我來說,編寫背后的代碼是解決方案。
如果要更改顏色,只需添加幾行即可。
<item name="android:statusBarColor">@color/blue</item>
到您的styles.xml文件中 Window.AddFlags(WindowManagerFlags.DrawsSystemBarBackgrounds);
到MainActivity.cs中的OnCreate方法
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.