【问题标题】:Xamarin Forms Custom Font Not Working On UWP (Works on Android)Xamarin 表单自定义字体在 UWP 上不起作用(适用于 Android)
【发布时间】:2018-02-15 08:45:52
【问题描述】:

我按照https://developer.xamarin.com/guides/xamarin-forms/user-interface/text/fonts/#Using_a_Custom_Font 的步骤操作。

在 UWP 上,我已将字体文件包含在 Assets/Fonts/DSEG7Modern-Regular.ttf 中(构建操作:内容。从不复制)。 Android 是在 Assets/DSEG7Modern-Regular.ttf (构建操作:AndroidAsset。从不复制)

代码

        <Label Text="Hello Forms with XAML">
            <Label.FontFamily>
                <OnPlatform x:TypeArguments="x:String">
                    <OnPlatform.iOS>DSEG7Modern-Regular</OnPlatform.iOS>
                    <OnPlatform.Android>DSEG7Modern-Regular.ttf#DSEG7 Modern</OnPlatform.Android>
                    <OnPlatform.WinPhone>Assets/DSEG7Modern-Regular.ttf#DSEG7 Modern</OnPlatform.WinPhone>
                </OnPlatform>
            </Label.FontFamily>
        </Label>

这可以在 Android 设备上正常运行。如果我在本地系统上安装字体,它也可以正常工作。如果我没有安装字体(我的用户不会),它将无法工作。

我也用后面的代码试过这个,它也不起作用。

   private string GetDSEG7FontForCurrentDevice()
    {
        switch (Device.RuntimePlatform)
        {
            case Device.Windows:
            case Device.WinPhone:
                return "Assets/Fonts/DSEG7Modern-Regular.ttf#DSEG7 Modern";
            case Device.Android:
                return "DSEG7Modern-Regular.ttf#DSEG7 Modern";
            case Device.iOS:
                return "DSEG7Modern-Regular";
        }

        return MainLabel.FontFamily;
    }

【问题讨论】:

    标签: android xaml fonts uwp xamarin.forms


    【解决方案1】:

    在“资产”之前添加“/”,如下所示

    xaml

        <Label x:Name="LabelModernFont" Text="Hello Forms with XAML">
            <Label.FontFamily>
                <OnPlatform x:TypeArguments="x:String" >
                    <On Platform ="Windows">/Assets/Fonts/DSEG7Modern-Regular.ttf#DSEG7 Modern</On>
                </OnPlatform>
            </Label.FontFamily>
        </Label>
    

    代码中:

    switch (Device.RuntimePlatform)
                {
                    case "Windows":
                        LabelModernFont.FontFamily = "/Assets/Fonts/DSEG7Modern-Bold.ttf#DSEG7 Modern";
                        break;
                }
    

    【讨论】:

    • 我试过这个没有效果。不过感谢您的建议。
    • 究竟是什么不起作用?您是否尝试在代码中执行此操作,验证您是否点击了该行代码?
    • 它不会将我的字体更改为指定的字体。它保持默认字体。我看到 FontFamily 中的值发生了变化,但它没有将其设置为 DSEG7 Modern。如果我在我的机器上安装 DSEG7 Modern 字体,它将正常显示。
    • 编辑了我的答案
    • 谢谢!我需要斜线并且必须针对 Windows,而不是 UWP。
    猜你喜欢
    • 1970-01-01
    • 2017-03-31
    • 2012-10-28
    • 1970-01-01
    • 2017-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多