나는 각 접시 양식 위에 맞춤식 다운로드 글꼴을 갖기 위해 Xamarin에 의해 제안 된 Fonts Tutorial을 따라 가고 있습니다. 그러나, 나는 많은 문제를 가지고 있고 또한 어떤 일을하는 방법을 찾으려고 노력하지만 whitout이 그것을 작동시키는 방법을 찾는다.Xamarin 양식 사용자 정의 글꼴 CrossPlatform
먼저 튜토리얼을 살펴보고 관련 부분부터 시작하십시오. Using a Custom Font
아이폰 OS는 :
그것은 우리가 리소스 폴더에 font.tff을 추가 할 필요가 있다고 말한다. 그렇다면 우리는 Info.plist로 무엇인가해야합니다. 내가해야 할 일을 이해하지 못합니다.
안드로이드 : 사용자 정의 렌더러가 필요하므로 안드로이드에 대한
Xamarin.Forms 현재, 사용자 정의 글꼴 파일에 글꼴을 설정할 수있는 기능을 노출하지 않습니다. 문서에 따르면
CustomLabelRenderer.cs는
public class CustomLabelRenderer : LabelRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);
System.Diagnostics.Debug.WriteLine(Forms.Context.ApplicationContext.Assets, e.NewElement.StyleId + ".ttf");
if (!string.IsNullOrEmpty(e.NewElement?.StyleId))
{
var font = Typeface.CreateFromAsset(Forms.Context.ApplicationContext.Assets, e.NewElement.StyleId + ".ttf");
Control.Typeface = font;
}
}
}
의
OnElementChanged()
는하지만, 그렇지 않습니다,라는 것입니다. Debug.WriteLine()은 아무 것도 표시하지 않습니다.
왜?
WinPhone 8.1 :
우리는 응용 프로그램 프로젝트의 /Assets/Fonts/
폴더에 글꼴 파일을 추가하고 빌드 작업을 설정해야합니다 : 내용. 일단 실현되면 Windows Phone 용 Xamarin.Forms는 특정 명명 표준을 따라 프로젝트에 추가 된 사용자 지정 글꼴을 참조 할 수 있습니다. 그러나 글꼴이보기에서 발생하지 않으며 글꼴이 표준으로 유지됩니다. 이유는 무엇입니까? 순간
는 검색의 많은 노력의 많은 ... 아무것도 ..
을 한 후 나는 DIN Condensed Bold
글꼴을 추가하기 위해 노력하고있어
내 XAML 레이아웃 :
<ContentPage.Content>
<AbsoluteLayout BackgroundColor="#235A5E">
<!-- Menu -->
<AbsoluteLayout x:Name="Menu" BackgroundColor="#2F767B"
AbsoluteLayout.LayoutBounds="0,0,1,0.1"
AbsoluteLayout.LayoutFlags="All">
<Label x:Name="label" Text="Connection" TextColor="White" FontSize="30" VerticalOptions="Center" HorizontalOptions="Center"
AbsoluteLayout.LayoutBounds="0.5, 0, 0.8, 1"
AbsoluteLayout.LayoutFlags="All"/>
<Button x:Name="ConnectionButton" BackgroundColor="Transparent" BorderColor="Transparent"
AbsoluteLayout.LayoutBounds="1, 0.5, 0.2, 1"
AbsoluteLayout.LayoutFlags="All"/>
</AbsoluteLayout>
</AbsoluteLayout>
</ContentPage.Content>
레이블의 FontFamily 속성을 이와 같이 설정할 수 있습니다.
<Label Text="Hello World !" FontFamily="DIN Condensed Bold"
그러나 튜토리얼에서 말한 것처럼 WinPhone을 예로 들면 다른 방법으로 수행해야하므로 C# 부분으로 FontFamily를 변경하려고합니다.
public partial class MyPage : ContentPage
{
public string FontFamily { get; set; }
public MyPage()
{
InitializeComponent();
label.FontFamily = Device.OnPlatform(
iOS: "DIN Condensed Bold",
Android: "DIN Condensed Bold",
WinPhone: @"Assets\Fonts\DINCondensedBold.ttf#DIN Condensed Bold"
);
}
}
어느 쪽도 작동하지 않습니다!또한 XAML 부분에 관해 나에게 흥미로운 것을 보았습니다. 나는 FontFamily가 언젠가는 .. defintion
을 갖기를 원한다. 나의 페이지의 모든 Label의 FontFamily를 설정하기 위해 하나의 필드 문자열을 편집 할 수있게 해준다.
<ContentPage.Resources>
<ResourceDictionary>
</ResourceDictionary>
</ContentPage.Resources>
MyPage.xaml의 모든 Label에 대해 FontFamily를 정의 할 수 있음을 확인했습니다. 어떻게 작동합니까?
는 또한 MVVM에 대한 안돼서 그러나 나는 성공없이 XAML <Label Text="Hello World !" FontFamily="{Binding FontFamily}"/>
하지만 한 번 더에 정의 된 레이블에 내 public string FontFamily { get; set; }
을 결합하는 시도 ..
내가 totaly 붙어있어 ... 누가 수 작업을 자습서로 만들거나 튜토리얼 후에 언급 한 각 항목을 설명하십시오. 도와 줘서 고마워!
해당 가이드에서 링크 된 블로그 항목을 읽으십시오. info.plist 수정에 대한 자세한 설명이 있습니다. – Jason
한 번에 하나의 플랫폼에 대해서도 시도해 볼 수 있습니다. 하나의 게시물에 여러 질문을 넣었으므로, 간결하게 대답하기가 어려운 – Jason
답장을 보내 주셔서 감사합니다. 그래, 다른 사람들을 위해 (안드로이드/WinPhone) 왜 작동하지 않습니다? 나는 단지 같은 이슈를 가지고있는 사람들에게 질문/대답을 유용하게하고 싶다. – Emixam23