使用TabbedPage时,更改所选NavigationPage上的“活动”图标

时间:2015-04-13 20:20:14

标签: ios xamarin.forms

我对Xamarin.Forms非常非常新。我的任务,如果可能的话,我不确定是否是,它是在活动时将我们的图标从默认蓝色更改。

enter image description here

我获得了橙色的图标,他们想要显示那些或至少是颜色而不是默认的蓝色。同样,我不确定这是否可行。

这是我用于标签页的代码。

public class LandingPage : TabbedPage
{
    public LandingPage ()
    {
         NavigationPage homepage = new NavigationPage (new CarouselPage {
                Title = "Title",
                Children = {
                  //code removed 
                }
        });

        NavigationPage eventspage = new NavigationPage (new ContentPage {
                Title = "Calendar Event List",
                Content = new EventList ()
        });
        NavigationPage morepage = new NavigationPage (new MorePage ());

        homepage.BarBackgroundColor = Device.OnPlatform (Color.FromHex (DependencyService.Get<IContentStrings>().BarBackgroundColor), Color.Transparent, Color.Transparent);
        homepage.BarTextColor = Color.FromHex(DependencyService.Get<IContentStrings>().BarTextColor);
        homepage.Title = DependencyService.Get<IContentStrings>().HomeTitle;
        homepage.Icon = DependencyService.Get<IContentStrings>().HomeImage;

        eventspage.BarBackgroundColor = Device.OnPlatform (Color.FromHex (DependencyService.Get<IContentStrings>().BarBackgroundColor), Color.Transparent, Color.Transparent);
        eventspage.BarTextColor = Color.FromHex(DependencyService.Get<IContentStrings>().BarTextColor);
        eventspage.Title = DependencyService.Get<IContentStrings>().EventTitle;
        eventspage.Icon = DependencyService.Get<IContentStrings>().EventImage;

        morepage.BarBackgroundColor = Device.OnPlatform (Color.FromHex (DependencyService.Get<IContentStrings>().BarBackgroundColor), Color.Transparent, Color.Transparent);
        morepage.BarTextColor = Color.FromHex(DependencyService.Get<IContentStrings>().BarTextColor);
        morepage.Title = DependencyService.Get<IContentStrings>().MoreTitle;
        morepage.Icon = DependencyService.Get<IContentStrings>().MoreImage;

        Children.Add (homepage);
        Children.Add (eventspage);
        Children.Add (morepage);
    }       
}

我不确定我是否能够使用自定义渲染器或其他任何东西。我不知道我是否有任何选择,非常感谢任何指导!

2 个答案:

答案 0 :(得分:1)

您可以使用简单的自定义iOS渲染器设置活动标签图标颜色,如下所示:

[assembly: ExportRenderer(typeof(TabbedPage), typeof(MyTabbedPageRenderer))]
namespace MyApp.iOS.Renderers
{
    public class MyTabbedPageRenderer : TabbedRenderer
    {
        protected override void OnElementChanged(VisualElementChangedEventArgs e)
        {
            base.OnElementChanged(e);
            TabBar.TintColor = UIColor.Orange;
        }
    }
}

答案 1 :(得分:0)

我发现在几个小时后在网上搜索然后在另一天回到应用程序后终于找到了答案。要从蓝色更改默认值,我在AppDelegate中更改了UITabbar色调颜色。

public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
    UIApplication.SharedApplication.SetStatusBarStyle (UIStatusBarStyle.LightContent, false);
    global::Xamarin.Forms.Forms.Init ();

    LoadApplication (new App ());

    //this changes the default iOS tintcolor for the icon when it's activated
    UITabBar.Appearance.TintColor = UIColor.FromRGB(223, 112, 13);

    return base.FinishedLaunching (app, options);

}