如何在 Xamarin.Form 应用程序中使用 text 属性为项目中的所有控件全局设置 FontFamily?

Posted

技术标签:

【中文标题】如何在 Xamarin.Form 应用程序中使用 text 属性为项目中的所有控件全局设置 FontFamily?【英文标题】:How to set FontFamily globally for all controls in the project with text property in Xamarin.Form app? 【发布时间】:2019-12-02 22:41:42 【问题描述】:

我正在为 androidios 创建一个 Xamarin.Form 应用程序,一些用户将系统默认字体替换为自己的字体,而 Xaml 中的 FontSize 属性不适用于这些字体,并且这些字体在我的应用程序。 1. 即使用户在他们的系统配置页面中更改了字体,我是否可以强制我的应用程序中使用的字体为系统默认字体? 2.如果我不能做到以上,我是否可以一劳永逸地将我的App中所有控件的FontFamily设置为我全局包含在我的Android和iOS资产文件夹中的字体? 我搜索了一些全局字体解决方案,但没有找到 Xamarin.Form 解决方案,并且某些解决方案似乎已经过时了。

现在,我像这样一一设置控件的 FontFamily:

<Button FontFamily="OnPlatform Android=xiaozuan.ttf#xiaozuan"/>

控件太多了,我真的不能一一搞定…… 任何线索或帮助将不胜感激!

【问题讨论】:

【参考方案1】:
    即使用户在系统配置页面中更改了字体,我是否可以强制我的应用程序中使用的字体为系统默认字体?

如果您想更改默认字体系列,我认为您可以使用自定义字体覆盖默认字体。 https://www.infragistics.com/help/xamarin/overriding-default-font

如果我不能执行上述操作,我可以将我的应用程序中所有控件的 FontFamily 设置为我在全局上一劳永逸地包含在我的 Android 和 iOS 资产文件夹中的字体

您可以使用Global Styles in Xamarin.Forms 更改项目中的所有元素,这里是更改所有标签的字体。

 <Application.Resources>
    <ResourceDictionary>
        <Style TargetType="Label">
            <Setter Property="FontFamily" Value="sans-serif" />
            <Setter Property="FontSize" Value="20" />
        </Style>
    </ResourceDictionary>

</Application.Resources>

【讨论】:

关于使用全局样式,Labels不是唯一可以使用哪些字体的控件,其他的还有Buttons、Entries、Editors、Pickers等。不知道能不能针对超类全部申请,只能找到IFontFamily的通用接口,但是TargetType中无法设置。 @Vahid,如果你想为所有控件使用字体,比如按钮、标签、条目...,你会看到我提供的第一个链接,尝试使用自定义字体覆盖默认值。infragistics.com/help/xamarin/overriding-default-font 投了反对票,因为这个答案没有提供没有第三方库的原始问题的解决方案,也没有描述是否可以使用本机代码完成。

以上是关于如何在 Xamarin.Form 应用程序中使用 text 属性为项目中的所有控件全局设置 FontFamily?的主要内容,如果未能解决你的问题,请参考以下文章

Hybrid WebView 导航和导航事件 Xamarin Form

Xamarin Form - 如何在 UWP 中为 MyToolkit.Controls.DataGrid 设置样式

如何在 Xamarin Form 的 Grouped ListView 中创建页脚模板

是否可以使用 xamarin.form 在我的应用程序中打开另一个应用程序?

如何以 xamarin form.ios 在 Icloud 上存储数据

Xamarin.Forms教程Android SDK工具下载安装