Xamarin.Forms:根据活动/不活动更改TabbedPage标签图标

时间:2018-08-21 15:19:22

标签: c# xamarin xamarin.forms

我正在研究Xamarin.Forms项目,并且我试图根据选项卡处于活动状态还是非活动状态来更改TabbedPage选项卡的图标。我已使用以下代码将其在iOS上运行,但是由于某些未知原因,它在Android上不起作用。

MainPage.xaml

<TabbedPage xmlns:Views="clr-namespace:Project.Views" xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="Project.Views.MainPage">
    <NavigationPage x:Name="HomeTab" Title="Home" Icon="home_inactive.png">
        <x:Arguments>
            <Views:Home/>
        </x:Arguments>
    </NavigationPage>
    <NavigationPage x:Name="FavoritesTab" Title="Favorites" Icon="favorites_inactive.png">
        <x:Arguments>
            <Views:Favorites/>
        </x:Arguments>
    </NavigationPage>
    <NavigationPage x:Name="AlertsTab" Title="Alerts" Icon="alerts_inactive.png">
        <x:Arguments>
            <Views:Alerts/>
        </x:Arguments>
    </NavigationPage>
    <NavigationPage x:Name="AccountTab" Title="Account" Icon="account_inactive.png">
        <x:Arguments>
            <Views:Account/>
        </x:Arguments>
    </NavigationPage>
    <NavigationPage x:Name="TestViewTab" Title="TestView">
        <x:Arguments>
            <Views:TestView/>
        </x:Arguments>
    </NavigationPage>
</TabbedPage>

MainPage.xaml.cs

public partial class MainPage : TabbedPage
{
    public MainPage()
    {

        InitializeComponent();

        this.CurrentPageChanged += (object sender, EventArgs e) => {

            var i = this.Children.IndexOf(this.CurrentPage);

            HomeTab.Icon = "home_inactive.png";
            FavoritesTab.Icon = "favorites_inactive.png";
            AlertsTab.Icon = "alerts_inactive.png";
            AccountTab.Icon = "account_inactive.png";

            switch (i)
            {
                case 0:
                    HomeTab.Icon = "home_active.png";
                    break;
                case 1:
                    FavoritesTab.Icon = "favorites_active.png";
                    break;
                case 2:
                    AlertsTab.Icon = "alerts_active.png";
                    break;
                case 3:
                    AccountTab.Icon = "account_active.png";
                    break;
            }

        };

    }

}

使用CurrentPageChanged事件在iOS上非常有效,但由于某些原因,它在Android上不起作用。如果我更改了Title之类的内容而不是Icon,则它可以在iOS和Android上使用。

我将如何解决此问题,使其在Android和iOS上均可使用?我可以在共享代码中全部完成吗?如果没有,有人可以指导我完成特定于平台的代码来完成这项工作吗?

0 个答案:

没有答案
相关问题