2016-12-01 78 views
0

我工作的一個項目Xamarin.Forms工作,我剛剛發現隱藏與此代碼的狀態欄圖標的方式:不能忠實地隱藏狀態欄的Android與Xamarin.Forms

this.Window.AddFlags(WindowManagerFlags.Fullscreen | WindowManagerFlags.TurnScreenOn); 

現在我試圖隱藏藍色狀態欄,我嘗試了兩種不同的方式,既沒有工作: 1)該代碼添加到activity.cs:

SetStatusBarColor(Color.Transparent); 

2)寫這幾行在style.xml中的所有可能組合中(在Resources/value中):

<item name="colorPrimary">@android:color/transparent</item> 
<item name="android:windowDrawsSystemBarBackgrounds">true</item> 
<item name="android:windowTranslucentStatus">true</item> 
<item name="android:windowTranslucentNavigation">true</item> 

似乎沒什麼可行的,我該怎麼辦?

+0

你從哪個對象獲得了你的活動?你正在測試什麼設備? API級別? –

+0

其實我找到了出路!我會去衝它 –

回答

0

要隱藏狀態欄,並把應用程序全屏在你的Android清單您需要將您的應用程序設置爲創建主題

<application android:label="@string/ApplicationName" android:theme="@style/Theme" android:icon="@drawable/Icon" android:hardwareAccelerated="true"></application> 

若要在Android資源21之前創建API級別主題值的文件夾添加一個styles.xml文件。例如:

<?xml version="1.0" encoding="utf-8" ?> 
<resources xmlns:android="http://schemas.android.com/apk/res/android"> 
    <style name="Theme" parent="Theme.Base"> 
    </style> 
    <style name="Theme.Base" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="android:windowFullscreen">true</item> 
    <item name="android:colorLongPressedHighlight">@android:color/transparent</item> 
    <item name="android:colorActivatedHighlight">@android:color/transparent</item> 
    <item name="android:windowBackground">@android:color/transparent</item> 
    </style> 
    <style name="Theme.Splash" parent="android:Theme"> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:windowFullscreen">true</item> 
    <item name="android:windowBackground">@android:color/transparent</item> 
    </style> 
</resources> 

對於Android的API 21+創建另一個文件夾值值-V21並添加一個styles.xml文件,像這樣:

<?xml version="1.0" encoding="utf-8" ?> 
<resources xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- Base application theme for API 21+. This theme completely replaces 'Theme' from BOTH res/values/styles.xml on API 21+ devices. --> 
    <style name="Theme" parent="Theme.Base"> 
    <item name="windowNoTitle">true</item> 
    <item name="android:windowContentOverlay">@null</item> 
    </style> 
</resources> 

而且,據我所知這應該適用於所有Xamarin Forms Android應用程序API 19以上的任何內容,我還沒有嘗試過。

0

如果使用導航嘗試NavigationPage.SetHasNavigationBar

0

這麼多的研究,我從上xamarin論壇JoeManke的answer最好的辦法了。

if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop) 
     { 
      // Kill status bar underlay added by FormsAppCompatActivity 
      // Must be done before calling FormsAppCompatActivity.OnCreate() 
      var statusBarHeightInfo = typeof(FormsAppCompatActivity).GetField("statusBarHeight", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic); 
      if (statusBarHeightInfo == null) 
      { 
       statusBarHeightInfo = typeof(FormsAppCompatActivity).GetField("_statusBarHeight", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic); 
      } 
      statusBarHeightInfo?.SetValue(this, 0); 
     } 

     this.Window.AddFlags(WindowManagerFlags.Fullscreen | WindowManagerFlags.TurnScreenOn);