Android uygulamasında bir Xamarin Android uygulamasında özel bir yazı tipi uygulamak için özel bir LabelRenderer oluşturdum (https://developer.xamarin.com/guides/xamarin-forms/user-interface/text/fonts/).Xamarin.Forms'taki Özel Yazı Tipi BiçimlendirilmişString ile
.Text özelliğine eklenen içerikle normal bir etiket için her şey harika çalışıyor. Ancak, .FormattedText özelliğini kullanarak bir etiket oluşturursam, özel yazı tipi uygulanmaz.
Bunu yapan herkes başarıya sahip midir? Bir seçenek, sadece farklı büyüklükteki metin satırlarını dizdiğimden, her biri için ayrı etiket denetimleri kullanmaktır, ancak mümkünse biçimlendirilmiş bir dize kullanmayı tercih ederim. öyle her iOS yazı tipini uygulamak ve kadar Android için yazı tipini uygulayarak bırakır ...
[assembly: ExportRenderer (typeof (gbrLabel), typeof (gbrLabelRenderer))]
public class gbrLabelRenderer: LabelRenderer
{
protected override void OnElementChanged (ElementChangedEventArgs<Label> e)
{
base.OnElementChanged (e);
var label = (TextView)Control;
Typeface font = Typeface.CreateFromAsset (Forms.Context.Assets, "Lobster-Regular.ttf");
label.Typeface = font;
}
}
Ve işte benim basit etiket kontrolü var:
İşte benim özel renderer bağırsaklar var özel oluşturucu.
public class gbrLabel: Label
{
public gbrLabel()
{
Device.OnPlatform (
iOS:() => {
FontFamily = "Lobster-Regular";
FontSize = Device.GetNamedSize(NamedSize.Medium,this);
}
}
}
İşleri sadece .Text özelliğiyle etiketler için ince ... ama .FormattedText özelliğiyle etiketler için.
Kazıya devam etmeli miyim yoksa etiketlerimi yığmalı mıyım? talep beri Burada
, ben Biçimlendirilmiş metinde bu denedim çeşitli şekillerde bir örnek:var fs = new FormattedString();
fs.Spans.Add (new Span {
Text = string.Format("LINE 1\n",Title),
FontSize = Device.GetNamedSize(NamedSize.Large,typeof(Label))
});
fs.Spans.Add (new Span {
Text = string.Format ("LINE 2\n"),
FontSize = Device.GetNamedSize(NamedSize.Large,typeof(Label)) * 2,
FontAttributes = FontAttributes.Bold,
FontFamily = "Lobster-Regular"
});
fs.Spans.Add (new Span {
Text = string.Format ("LINE 3\n"),
FontSize = Device.GetNamedSize(NamedSize.Medium,typeof(Label)),
FontFamily = "Lobster-Regular.ttf"
});
gbrLabel lblContent = new gbrLabel {
FormattedText = fs
}
Bunların hiçbiri (birinci, varsayılan sınıf/Oluşturucu tarafından ayarlanmalı ve ikinci 2, bir yayılma tanımlamasında fontun dahil edilmesinin çeşitliliğidir) Android'de çalışma.
Olası kopyalar http://stackoverflow.com/questions/28407417/change-typeface-of-formatted güzel renkli Metin :) olduğunu -text-in-xamarin) –
Doğru, çok benzer ... hiç kimse bu soruya iyi bir cevap vermedi. Daha önce hiç bir dupe sormadım - sorularımı tazeleştirmek için oradaki soruyu taşıyabilir miyim? –
Bu cevaptan neyin eksik? Her yayılma için yazı tipini ayarlayabilirsiniz. Veya hedefiniz, yazı tipini arka planda tüm Etiketlere göre ayarlamak, böylece manuel olarak ayarlamanıza gerek kalmaz mı? –