Xamarin表单自定义字体在UWP上不起作用(适用于Android)

时间:2017-09-06 18:48:00

标签: android xaml fonts uwp xamarin.forms

我按照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;
    }

1 个答案:

答案 0 :(得分:3)

添加&#34; /&#34;之前&#34;资产&#34;如下所示

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;
            }

enter image description here