수색…


비고

살펴볼 리소스 :

Syles에서 사용자 정의 글꼴에 액세스

Xamarin.Forms는 크로스 플랫폼 애플리케이션을 글로벌 스타일로 스타일화할 수있는 훌륭한 메커니즘을 제공합니다.

모바일 환경에서 애플리케이션은 꽤 아름답고 다른 애플리케이션과 차별화되어야합니다. 이 문자 중 하나는 응용 프로그램에 사용되는 사용자 정의 글꼴입니다.

Xamarin.Forms의 XAML Styling 지원 기능으로 사용자 정의 글꼴이있는 모든 레이블의 기본 스타일을 만들었습니다.

iOS 및 Android 프로젝트에 맞춤 글꼴을 포함 시키려면 Gerald가 작성한 iOS 및 Android의 맞춤 글꼴 사용 Xamarin.Forms 게시물 가이드를 따르십시오.

App.xaml 파일 리소스 섹션의 스타일 선언. 이렇게하면 모든 스타일이 전체적으로 표시됩니다.

위의 Gerald 게시판에서 StyleId 속성을 사용해야하지만이 속성은 바인딩 가능한 속성이 아니므로 Style Setter에서이 속성을 사용하려면 Attachable Property를 만들어야합니다.

public static class FontHelper
{
    public static readonly BindableProperty StyleIdProperty =
        BindableProperty.CreateAttached(
            propertyName: nameof(Label.StyleId),
            returnType: typeof(String),
            declaringType: typeof(FontHelper),
            defaultValue: default(String),
            propertyChanged: OnItemTappedChanged);

    public static String GetStyleId(BindableObject bindable) => (String)bindable.GetValue(StyleIdProperty);

    public static void SetStyleId(BindableObject bindable, String value) => bindable.SetValue(StyleIdProperty, value);


    public static void OnItemTappedChanged(BindableObject bindable, object oldValue, object newValue)
    {
        var control = bindable as Element;
        if (control != null)
        {
            control.StyleId = GetStyleId(control);
        }
    }
}

그런 다음 App.xaml 리소스에 스타일을 추가합니다.

<?xml version="1.0" encoding="utf-8" ?>
<Application xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:h="clr-namespace:My.Helpers"
             x:Class="My.App">

  <Application.Resources>

    <ResourceDictionary>
        <Style x:Key="LabelStyle" TargetType="Label">
            <Setter Property="FontFamily" Value="Metric Bold" />
            <Setter Property="h:FontHelper.StyleId" Value="Metric-Bold" />
        </Style>
    </ResourceDictionary>

  </Application.Resources>

</Application>

위의 게시물에 따르면 Android 용 LabelRenderer에서 상속 한 Label 용 맞춤 렌더러를 만들어야합니다.

internal class LabelExRenderer : LabelRenderer
{
    protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
    {
        base.OnElementChanged(e);
        if (!String.IsNullOrEmpty(e.NewElement?.StyleId))
        {
            var font = Typeface.CreateFromAsset(Forms.Context.ApplicationContext.Assets, e.NewElement.StyleId + ".ttf");
            Control.Typeface = font;
        }
    }
}

iOS 플랫폼의 경우 사용자 정의 렌더러가 필요하지 않습니다.

이제 당신의 페이지 마크 업에서 스타일을 얻을 수 있습니다 :

특정 라벨 용

<Label Text="Some text" Style={StaticResource LabelStyle} />

또는 LabesStyle을 기반으로 스타일을 만들어 페이지의 모든 레이블에 스타일을 적용하십시오.

<!-- language: xaml -->

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="My.MainPage">

  <ContentPage.Resources>

    <ResourceDictionary>
        <Style TargetType="Label" BasedOn={StaticResource LabelStyle}>
        </Style>
    </ResourceDictionary>

  </ContentPage.Resources>

  <Label Text="Some text" />      

</ContentPage>


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow