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

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

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

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

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

【问题讨论】:

    标签: xamarin xamarin.forms


    【解决方案1】:
    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
    • 投了反对票,因为这个答案没有提供没有第三方库的原始问题的解决方案,也没有描述是否可以使用本机代码完成。
    猜你喜欢
    • 2017-06-27
    • 2014-11-24
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多