Xamarin Forms中所有标签的自定义字体

5

我从fonts.google.com下载了一个字体,并希望为我的Xamarin Forms应用程序中的所有标签设置字体系列。

将以下代码添加到所有标签似乎是一项过度繁琐的工作

                <Label.FontFamily>
                        <OnPlatform x:TypeArguments="x:String">
                        <OnPlatform.Android>Mogra-Regular.ttf#Mogra-Regular</OnPlatform.Android>
                    </OnPlatform>
                </Label.FontFamily>

理想情况下,我会将字体族设置在资源字典中,在那里我已成功设置了文本颜色和字体属性,然而,我尝试过但并没有成功。我已经成功使用自定义渲染器更改了字体族,但是一旦我使用动态资源更改标签文本颜色或字体属性,字体族就会重置为默认值。是否有任何方法可以让我普遍地使用自定义字体并仍然允许我动态更改任何给定标签的其他方面呢?

我们从Label派生并制作了一个自定义控件,以便我们可以在整个应用程序中实现统一的设计。 - JoeTomks
1个回答

6
在你的App.xaml中创建一个隐式样式(没有x:Key的样式),它将应用于所有Label
<Style TargetType="Label">
  <Setter Property="FontFamily">
    <Setter.Value>
      <OnPlatform x:TypeArguments="x:String">
        <OnPlatform.Android>Mogra-Regular.ttf#Mogra-Regular</OnPlatform.Android>
      </OnPlatform>
    </Setter.Value>
  </Setter>
</Style>

1
啊!原来是x:Key的问题,所以我一直无法在资源字典中使其工作。谢谢!不过现在又出现了一个新问题,因为粗体版本是一个单独的ttf文件,我不能简单地将字体属性改为粗体。有什么建议可以解决这个问题吗?还是我应该提一个新的问题? - Morten J Petersen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接