在Xamarin Forms中更改我的应用程序的字体(所有标签/列表视图...)

时间:2016-04-25 14:43:12

标签: listview button fonts label xamarin.forms

我想用我的应用程序的自定义字体更改我的fontfamilly。

在Xamarin文档中,我可以看到我如何只为一个标签更改fontfamilly,但不能用于我的整个应用程序!

我使用Xamarin Forms for Android和IOS!

我需要更改我的字体: -Listviews -纽扣 -label

谢谢

2 个答案:

答案 0 :(得分:3)

您可以使用Global Style将更改应用于应用中的所有元素。要更改所有Label元素的字体,可以执行以下操作:

<Application xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="Styles.App">
    <Application.Resources>
        <ResourceDictionary>
            <Style TargetType="Label">
                <Setter Property="FontFamily" Value="sans-serif" />
                <Setter Property="FontSize" Value="12" />
            </Style>
        </ResourceDictionary>
    </Application.Resources>
</Application>

答案 1 :(得分:1)

通过这种方式,您可以按照以下方式使用XAML代码:

<Label FontFamily="Arial" Text="Hi there" />

Android 您可以为所需的所有视图覆盖默认渲染器。这是Label的一个例子。您可以对列表视图和按钮执行相同的操作。

[assembly: ExportRenderer (typeof (Label), typeof (MyLabelRenderer))]
namespace MyApp.Droid
{
    public class MyLabelRenderer : LabelRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
        {
            base.OnElementChanged(e);

            if ( !String.IsNullOrEmpty(Element.FontFamily) )
                Control.Typeface = Typeface.CreateFromAsset(Forms.Context.Assets, "Fonts/" + Element.FontFamily + ".otf");
        }
    }
}

当然,您需要将其映射到嵌入自定义字体的位置。在我的情况下资产/字体/ Arial.otf (构建操作:AndroidAsset)。

iOS 中,您需要将其添加到Resources文件夹: Resources / Arial.otf (构建操作:BundleResource),它应该与上面的XAML代码一起使用。