如何改写Android的系统字体?

时间:2019-02-14 16:47:52

标签: xamarin.forms

因此,简而言之,我尝试设置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>

在整个解决方案中,我一直在寻找“ font”和“ family”两个词,不幸的是,没有任何相关内容。

出于记录,我知道我最终将不得不使用一个习惯用法,但是我想让更改首先以一种快速而又肮脏的方式起作用。

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

1 个答案:

答案 0 :(得分:1)

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

1,将字体文件复制到Assets文件夹中,在我的演示中,我使用Roboto-Italic.ttf使其清晰可见。

2,将标签的字体系列设置为已添加到资产中的字体:

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