2014-07-12 26 views
1

如何更改Xamarin Forms項目中Android應用程序的所有頁面中ActionBar的可見性。我在主要活動中使用了ActionBar.Hide(),但它只在首頁隱藏它。在Xamarin PCL項目中隱藏Android Action Bar

namespace ParsellIT.Droid 
{ 
    [Activity(Label = "ParsellIT", MainLauncher = true)] 
    public class MainActivity : AndroidActivity 
    { 
     protected override void OnCreate(Bundle bundle) 
     { 
      base.OnCreate(bundle); 
      Xamarin.Forms.Forms.Init(this, bundle);    
      SetPage(App.GetMainPage()); 
      ActionBar.Hide();  
     } 
    } 
} 

我想隱藏在每個頁面中,但我不能訪問android特定代碼中的每個頁面,因爲它們是在PCL中構建的。有沒有辦法做到這一點?

回答

1

您應該在您的應用中使用沒有操作欄的主題。對於恩,你可以指定應用somewere屬性在您的應用程序:

[assembly: Application(Icon = "@drawable/Icon" Theme = "@android:Theme.Holo.Light.NoActionBar")] 

或者你可以將其設置在AndroidManifaset.xml

<application android:theme="@android:style/Theme.Holo.Light.NoActionBar" /> 

當然UPD 主題設置必須在Android項目完成,但即使在PCL中,它也會影響每個頁面。

+0

它並沒有幫助。它仍然顯示ActionBar – fantaseador

+0

另一種選擇是在Resources/values/Style.xml中創建自己的主題(如果沒有創建一個)像那裏一樣http://stackoverflow.com/a/14061826/1558147 並將它用作顯示在回答「'主題=」@樣式/我的主題「' – ad1Dima

+1

添加到我的清單實際上崩潰我的應用程序在MainActivity的SetPage上的NullReferenceException – Jesse

3

一個更好的選擇是調用:

global::Xamarin.Forms.Forms.SetTitleBarVisibility(Xamarin.Forms.AndroidTitleBarVisibility.Never) 

var page = App.GetMainPage(); 
Xamarin.Forms.NavigationPage.SetHasNavigationBar(page, true) 

或XAML

<ContentPage 
    xmlns="http://xamarin.com/schemas/2014/forms" 
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
    x:Class="Mobile.Views.NewsFeedSearchView" 
    NavigationPage.HasNavigationBar="{Binding IsFullScreen}"/>