为选项卡式页面选项卡使用字体真棒图标

Use font awesome icon for tabbed page tabs

这就是我向标签页添加标签的方式。 我的应用程序中的各个地方都有很棒的字体图标。我如何将图标添加到我的选项卡,因为我在后面的代码中添加选项卡是这样的:

public partial class MainTabbedPage : TabbedPage
{
    public MainTabbedPage(SelectedItem item)
    {
        InitializeComponent();
        var summaryPage = new DeviceSummaryPage(item);

        Children.Add(summaryPage);
        Children.Add(new DeviceSettingsPage(item));
        Children.Add(new FirmwarePage(item));       
    }
}

How do I add icons to my tabs

首先,您需要将字体复制到特定于平台的项目中:

  1. 在 Android 进入 Assets 文件夹 使用 Build Action AndroidAsset,
  2. 在 iOS 上使用构建操作 BundleResource
  3. 进入 Resources 文件夹
  4. 在 UWP 上使用 Build Action Content.
  5. 进入 Assets 文件夹

注意:在 iOS 上,需要更改 Info.plist 文件以便也可以使用添加的字体。

PNG 在 Android 平台上。

为了能够使用字体,在 App.xaml

中创建 ResourceDictionary
<ResourceDictionary>
        <OnPlatform x:Key="FontAwesomeBrands" x:TypeArguments="x:String">
            <On Platform="Android" Value="FontAwesome5Brands.otf#Regular" />
            <On Platform="iOS" Value="FontAwesome5Brands-Regular" />
            <On Platform="UWP" Value="/Assets/FontAwesome5Brands.otf#Font Awesome 5 Brands" />
        </OnPlatform>

        <OnPlatform x:Key="FontAwesomeSolid" x:TypeArguments="x:String">
            <On Platform="Android" Value="FontAwesome5Solid.otf#Regular" />
            <On Platform="iOS" Value="FontAwesome5Free-Solid" />
            <On Platform="UWP" Value="/Assets/FontAwesome5Solid.otf#Font Awesome 5 Free" />
        </OnPlatform>

        <OnPlatform x:Key="FontAwesomeRegular" x:TypeArguments="x:String">
            <On Platform="Android" Value="FontAwesome5Regular.otf#Regular" />
            <On Platform="iOS" Value="FontAwesome5Free-Regular" />
            <On Platform="UWP" Value="/Assets/FontAwesome5Regular.otf#Font Awesome 5 Free" />
        </OnPlatform>
    </ResourceDictionary>

创建一个 FontImageSource 对象并相应地设置值,然后将该对象传递给您的 ContentPage 的 IconImageSource。

  public TabbedPage1()
    {
        InitializeComponent();
        var solidFontFamily = Application.Current.Resources["FontAwesomeSolid"] as OnPlatform<string>;
        var RegularFontFamily = Application.Current.Resources["FontAwesomeRegular"] as OnPlatform<string>;


        Children.Add(new simplecontrol.Page1() { IconImageSource=new FontImageSource() { FontFamily = RegularFontFamily, Glyph = "\uf108" } });
        Children.Add(new simplecontrol.Page3() { IconImageSource = new FontImageSource() { FontFamily = solidFontFamily, Glyph = "\uf108" } });

    }