首页 > 解决方案 > 如何覆盖Android的系统字体?

问题描述

所以,简而言之,我尝试设置 Label.FontFamily 属性并没有生效。

我对移动应用程序有一个非常简单的要求。正在开发的应用程序的 Android 版本应始终以 Roboto 字体呈现文本,无论系统设置中的字体系列是什么。

这是不起作用的示例标记:

<Label VerticalOptions="CenterAndExpand"
       HorizontalOptions="CenterAndExpand"
       TextColor="White"
       HorizontalTextAlignment="Center"
       FontSize="46"
       FontFamily="Roboto">Hello world!</Label>

我已将系统字体设置为一种看起来很奇怪的字体,名为 Travel,它预装在我的手机中。我设备上的所有内容都以该字体呈现,不幸的是,其中包括问候标签,其代码发布在此处。

我尝试了 Roboto.ttf 而不是简单的 Roboto。我尝试更改 MainTheme

<style name="MainTheme" parent ="Theme.AppCompat.Light.NoActionBar">
    <item name="android:textAllCaps">false</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:fontFamily">Roboto</item>
    <item name="android:windowFullscreen">true</item>
  </style>

我在整个解决方案中寻找“字体”和“家庭”这两个词,不幸的是,没有任何相关的东西出现。

作为记录,我知道我最终将不得不使用一个成语,但我想首先让改变以一种快速而肮脏的方式工作。

如何从系统设置中覆盖该字体?

标签: xamarin.forms

解决方案


您可以通过以下步骤覆盖 Android 的系统字体:

1、将字体文件复制到Assets文件夹下,在我的demo中,我曾经Roboto-Italic.ttf讲清楚。

2、将label的fontfamily设置为你添加到assets的字体:

    <Label.FontFamily>
        <OnPlatform x:TypeArguments="x:String">
            <On Platform="Android" Value="Roboto-Italic.ttf#Roboto-Italic.ttf" />
         </OnPlatform>
    </Label.FontFamily>

推荐阅读