在Xamarin App上使用Font Awesome会在UWP上显示空白框而不是图标

时间:2018-11-21 15:34:41

标签: xaml xamarin uwp cross-platform font-awesome

我在我的xamarin应用程序中使用Font Awesome 5。我想在RadButton(Telerik)中显示一个图标:

<telerikInput:RadButton
          Grid.Row="0" Grid.Column="0" 
          Text="&#xf029;"
          FontSize="30"
          Style="{StaticResource TelerikButtonStyle}"
          Command="{Binding MyCommand}">

          <telerikInput:RadButton.FontFamily>
            <OnPlatform x:TypeArguments="x:String">
              <On Platform="Android" Value="FontAwesome5Free-Solid-900.otf#Font Awesome 5 Free Solid" />
              <On Platform="Windows" Value="Assets/Fonts/FontAwesome5Free-Solid-900.otf#Font Awesome 5 Free Solid" />
            </OnPlatform>
            </telerikInput:RadButton.FontFamily>

        </telerikInput:RadButton>`

对于Android,这可以正常工作,但是在UWP中它显示一个空白框。

3 个答案:

答案 0 :(得分:1)

在平台上应使用“ UWP”而不是“ Windows”

<On Platform="UWP" Value="Assets/Fonts/FontAwesome5Free-Solid-900.otf#Font Awesome 5 Free Solid" />

答案 1 :(得分:1)

Font Awesome的字体名称中不包含Solid。尝试从名称中删除Solid,如下所示:

<On Platform="Windows" Value="Assets/Fonts/FontAwesome5Free-Solid-900.otf#Font Awesome 5 Free" />

编辑:

如果您使用的是Xamarin.Forms 2.3.4或更高版本,则将Windows替换为UWP如下:

<On Platform="UWP" Value="Assets/Fonts/FontAwesome5Free-Solid-900.otf#Font Awesome 5 Free" />

答案 2 :(得分:0)

我已经在空白解决方案中进行了尝试,并使其工作如下:

  1. 在UWP项目的Assets/Fonts文件夹中添加了字体,并确保它具有正确的名称(在我的情况下,我将字体重命名为FontAwesome5.otf),并且 Content 的构建操作是:

enter image description here

  1. 使用以下内容引用字体(注意-此示例仅设置UWP路径,因此您应按照问题中的说明添加其他平台):

XAML:

<Label Text="&#xf11a;" 
   FontSize="40"
   HorizontalOptions="Center"
   VerticalOptions="CenterAndExpand">
    <Label.FontFamily>
        <OnPlatform x:TypeArguments="x:String">
            <On Platform="UWP" Value="Assets/Fonts/FontAwesome5.otf#Font Awesome 5 Free" />
        </OnPlatform>
    </Label.FontFamily>
</Label>

可以使用某些字体查看器应用程序找到正确的#后缀,例如dp4 Font Viewer

DP4

结果:

Result