如何为xamarinf表单应用程序设置自定义字体

时间:2016-10-06 12:05:10

标签: fonts xamarin.forms xamarin.forms-styles

Iam尝试使用app.xaml中的样式为整个xamarin表单应用设置自定义字体。但我得到了未处理的异常。

<Label Style="{StaticResource labelFont}"></Label>

在我的内容页面中使用样式如下

result = dt$Value[dt$Date %in% dates]
# [1] 2 3

对此有何解决方案?

1 个答案:

答案 0 :(得分:0)

如果要使用字体文件为所有标签设置字体,则需要创建自定义渲染器。在那里,像这样重写OnElementChanged:

 protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
    {
        base.OnElementChanged(e);
        try
        {
            Typeface font = Typeface.CreateFromAsset(Forms.Context.Assets, path);
            Control.Typeface = font;
        }
        catch(Exception ex)
        {
            System.Diagnostics.Debug.WriteLine("Unable to make typeface:" + ex);
        }
    }

但是,如果你想为每个标签设置一个自定义字体,你需要创建一个自定义标签类(在pcl中)继承自Label并添加一个字体属性(准确地说 - 你的属性) '用于传递字体文件的路径。)

public static readonly BindableProperty CustomFontProperty =
        BindableProperty.Create(
            "CustomFont",
            typeof(string),
            typeof(CustomLabel),
            default(string));

    public string CustomFont
    {
        get { return (string)GetValue(CustomFontProperty); }
        set { SetValue(CustomFontProperty, value); }
    }

然后在您的渲染器中,您可以像这样阅读此属性:

var label = Element as CustomLabel;
string path = label.CustomFont;

请注意Android中的路径使用'/'作为分隔符,而不是'。'就像在表格中一样