2014-07-12 25 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}"/>