如何在Xamarin CSS中使用自定义字体系列?

时间:2018-10-15 20:10:00

标签: xamarin xamarin.forms

Xamarin CSS使您可以使用类似于CSS的语法指定font-family。我需要设置一个自定义字体。通常看起来像这样:

<Style x:Key="RockwellFontLabel" TargetType="Label">
    <Setter Property="FontFamily">
        <OnPlatform x:TypeArguments="x:String">
            <On Platform="Android" Value="RockwellStd.otf#RockwellStd.otf" />
            <On Platform="iOS" Value="RockwellStd" />
        </OnPlatform>
    </Setter>
</Style>

...

<Label Style="{StaticResource RockwellFontLabel}" Text="I AM TEXT"/>

虽然详细,但确实有效。但是Xamarin CSS承诺的更多。我可以做一些事情,例如只用一个“ CSS”规则为整个部分设置字体系列,对吗?是吗?!

#myElement * {
    font-family: 'RockwellStd';
    color: hotpink;
}

但这只能设置颜色。它根本没有设置我的自定义字体系列。显然,在Android上,该字体位于/Assets/RockwellStd.otf下,并且将构建动作设置为AndroidAsset/Resources/Fonts/RockwellStd.otf,并且构建动作为BundleResource

是否可以在Xamarin CSS中使用自定义字体?如果可以,怎么办?

1 个答案:

答案 0 :(得分:2)

因此,关于CSS的问题非常有效,这将是在Xamarin Forms中使用样式>应用于集合中的所有子项的最大优势之一。

但是Xamarin Forms中CSS的当前状态(截至撰写时)仍然受到限制。从这个意义上讲,仍然不可能针对CSS样式内的每个平台针对自定义字体定义定位可能的StaticResource。 将该问题提到当时的Xamarin Forms PM(https://twitter.com/Depechie/status/1001944818543718400)David Ortinau。

因此,目前我们只能通过一些xaml样式解决此问题,建议您为每个平台的自定义字体保留原始的StaticResource样式定义。但是,不要将其应用到常规App.xaml内,而是尝试仅将其设置在仅希望其出现的View或UI元素的ResourceDictionary属性内。

如果您尝试在Implicit Styling中使用ResourceDictionary,则无需在每个Label元素中添加Style="{StaticResource RockwellFontLabel}"标签。