Ich bin der Fonts Tutorial von Xamarin vorgeschlagen, um eine benutzerdefinierte heruntergeladene Schriftarten über jede Platte haben. Allerdings habe ich viele Probleme und ich versuche auch, einen Weg zu finden, etwas zu tun, aber nicht herauszufinden, wie es funktioniert.Xamarin Forms Benutzerdefinierte Schriftarten CrossPlatform
Zuerst, werfen Sie einen Blick auf das Tutorial und beginnen mit dem betreffenden Teil. Using a Custom Font
iOS:
Er sagt, dass wir die font.tff in die Ordner Resources hinzufügen müssen. Dann müssen wir etwas mit der Info.plist tun, aber was? Ich bin mir nicht sicher, was ich zu tun habe.
Androïd:
Xamarin.Forms für Android belichten derzeit nicht die Möglichkeit, die Schriftart, um eine benutzerdefinierte Schriftdatei zu setzen, so benutzerdefinierte Renderer erforderlich sind.
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;
}
}
}
Gemäß der Dokumentation würde die OnElementChanged()
jedoch genannt werden, es funktioniert nicht. Debug.WriteLine() zeigt nichts an. Warum?
WinPhone 8.1:
Wir haben die Font-Datei auf den /Assets/Fonts/
Ordner in der Anwendung Projekt hinzuzufügen und die Build Action gesetzt: Content. Einmal realisiert, kann Xamarin.Forms für Windows Phone auf eine benutzerdefinierte Schriftart verweisen, die dem Projekt hinzugefügt wurde, indem ein bestimmter Benennungsstandard befolgt wird. Die Schrift findet jedoch nicht auf der Ansicht statt, die Schrift bleibt Standard, warum?
Im Moment nach viel sucht, viele versuchen ... Nichts ..
Ich versuche DIN Condensed Bold
Schrift
Meine XAML-Layout hinzuzufügen:
<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>
So kann die FontFamily-Eigenschaft des Etiketts wie folgt eingestellt werden
Aber, wie im Tutorial für das WinPhone von Beispiel gesagt, muss es auf eine andere Weise getan werden, also versuche ich, die FontFamily durch den C# -Teil zu ändern.
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"
);
}
}
Was nicht funktioniert auch!Ich habe auch etwas interessantes über den XAML-Teil gesehen. Ich möchte (damit die FontFamily eines Tages funktioniert ..) eine defintion
haben, die es mir ermöglicht, nur eine Feldleiste zu editieren, um alle FontFamily von Label auf meiner Seite zu setzen.
<ContentPage.Resources>
<ResourceDictionary>
</ResourceDictionary>
</ContentPage.Resources>
ich sah, dass ich in der Lage sein könnte, eine Fontfamily für alle Label von MyPage.xaml, zu definieren, wie funktioniert ist das?
Ich bin auch ein Neuling über MVVM aber ich versuchte, meine public string FontFamily { get; set; }
auf dem Etikett in der XAML definiert zu binden <Label Text="Hello World !" FontFamily="{Binding FontFamily}"/>
aber ein weiteres Mal ohne Erfolg ..
ich totaly bin stecken ... Wer kann Hilf entweder, das Tutorial zu machen oder erkläre mir alle Dinge, die ich nach dem Tutorial erwähnt habe. Danke für Hilfe!
Lesen Sie den Blogeintrag, der von diesem Handbuch verlinkt ist, er enthält eine ausführlichere Beschreibung zum Ändern der Datei info.plist – Jason
Sie könnten auch versuchen, diese eine Plattform gleichzeitig anzugehen - da Sie mehrere Fragen in einen einzigen Beitrag gepackt haben, was schwer zu beantworten ist prägnant – Jason
Vielen Dank für Ihre Antwort. Ok also für die anderen (Android/WinPhone) warum funktioniert das nicht? Ich möchte nur eine Frage/Antwort nützlich für Leute, die die gleichen Probleme haben – Emixam23