içindeki yazı tipleri Xamarin.Forms
Varsayılan olarak, Xamarin.Forms her platform tarafından tanımlanan bir sistem yazı tipi kullanır. Ancak, metin görüntüleyen denetimler bu yazı tipini değiştirmek için kullanabileceğiniz özellikleri tanımlar:
FontAttributes
, türüneFontAttributes
göre üç üyesi olan bir sabit listesidir:None
,Bold
veItalic
. Bu özelliğin varsayılan değeridirNone
.FontSize
, türündedirdouble
.FontFamily
, türündedirstring
.
Bu özellikler nesneler tarafından BindableProperty
desteklenir; bu da veri bağlamalarının hedefleri olabileceği ve stillendirilebileceği anlamına gelir.
Yazı tipi özniteliklerini ayarlama
Metin görüntüleyen denetimler, yazı tipi özniteliklerini belirtmek için özelliğini ayarlayabilir FontAttributes
:
<Label Text="Italics"
FontAttributes="Italic" />
<Label Text="Bold and italics"
FontAttributes="Bold, Italic" />
Eşdeğer C# kodu:
Label label1 = new Label
{
Text = "Italics",
FontAttributes = FontAttributes.Italic
};
Label label2 = new Label
{
Text = "Bold and italics",
FontAttributes = FontAttributes.Bold | FontAttributes.Italic
};
Yazı tipi boyutunu ayarlama
Metin görüntüleyen denetimler, yazı tipi boyutunu belirtmek için özelliğini ayarlayabilir FontSize
. FontSize
özelliği doğrudan bir değere veya NamedSize
bir double
numaralandırma değerine ayarlanabilir:
<Label Text="Font size 24"
FontSize="24" />
<Label Text="Large font size"
FontSize="Large" />
Eşdeğer C# kodu:
Label label1 = new Label
{
Text = "Font size 24",
FontSize = 24
};
Label label2 = new Label
{
Text = "Large font size",
FontSize = Device.GetNamedSize(NamedSize.Large, typeof(Label))
};
Alternatif olarak, yönteminin Device.GetNamedSize
ikinci bağımsız değişkeni olarak belirten bir Element
geçersiz kılması vardır:
Label myLabel = new Label
{
Text = "Large font size",
};
myLabel.FontSize = Device.GetNamedSize(NamedSize.Large, myLabel);
Not
FontSize
değeri olarak belirtildiğinde double
cihazdan bağımsız birimler halinde ölçülür. Daha fazla bilgi için bkz . Ölçü Birimleri.
Adlandırılmış yazı tipi boyutları hakkında daha fazla bilgi için bkz . Adlandırılmış yazı tipi boyutlarını anlama.
Yazı tipi ailesini ayarlama
Metin görüntüleyen denetimler, özelliğini "Times Roman" gibi bir yazı tipi ailesi adı olarak ayarlayabilir FontFamily
. Ancak, bu yalnızca söz konusu yazı tipi ailesi belirli bir platformda destekleniyorsa çalışır.
Bir platformda kullanılabilen yazı tiplerini türetmeye çalışmak için kullanılabilecek çeşitli teknikler vardır. Ancak, TTF (True Type Format) yazı tipi dosyasının varlığı mutlaka bir yazı tipi ailesi anlamına gelmez ve TDF'ler genellikle uygulamalarda kullanılmak üzere tasarlanmamıştır. Buna ek olarak, bir platforma yüklenen yazı tipleri platform sürümüyle değişebilir. Bu nedenle, yazı tipi ailesi belirtmek için en güvenilir yaklaşım özel bir yazı tipi kullanmaktır.
Paylaşılan projenize Xamarin.Forms özel yazı tipleri eklenebilir ve ek çalışma yapılmadan platform projeleri tarafından kullanılabilir. Bunu gerçekleştirme işlemi aşağıdaki gibidir:
- Paylaşılan projenize Xamarin.Forms ekli kaynak olarak yazı tipini ekleyin (Derleme Eylemi: EmbeddedResource).
- özniteliğini kullanarak yazı tipi dosyasını derlemeye AssemblyInfo.cs gibi bir dosyaya
ExportFont
kaydedin. İsteğe bağlı bir diğer ad da belirtilebilir.
Aşağıdaki örnek, bir diğer adla birlikte derlemeye kaydedilen Lobster-Regular yazı tipini gösterir:
using Xamarin.Forms;
[assembly: ExportFont("Lobster-Regular.ttf", Alias = "Lobster")]
Not
Yazı tipi, yazı tipini derlemeye kaydederken klasör adını belirtmek zorunda kalmadan paylaşılan projedeki herhangi bir klasörde bulunabilir.
Windows'da yazı tipi dosya adı ve yazı tipi adı farklı olabilir. Windows'ta yazı tipi adını bulmak için .ttf dosyasına sağ tıklayın ve Önizleme'yi seçin. Yazı tipi adı önizleme penceresinden belirlenebilir.
Yazı tipi daha sonra dosya uzantısı olmadan adına başvurarak her platformda kullanılabilir:
<!-- Use font name -->
<Label Text="Hello Xamarin.Forms"
FontFamily="Lobster-Regular" />
Alternatif olarak, diğer adına başvurarak her platformda kullanılabilir:
<!-- Use font alias -->
<Label Text="Hello Xamarin.Forms"
FontFamily="Lobster" />
Eşdeğer C# kodu:
// Use font name
Label label1 = new Label
{
Text = "Hello Xamarin.Forms!",
FontFamily = "Lobster-Regular"
};
// Use font alias
Label label2 = new Label
{
Text = "Hello Xamarin.Forms!",
FontFamily = "Lobster"
};
Aşağıdaki ekran görüntüleri özel yazı tipini gösterir:
Önemli
Windows'daki yayın derlemeleri için, özel yazı tipini içeren derlemenin yöntem çağrısında bağımsız değişken olarak geçirildiğinden Forms.Init
emin olun. Daha fazla bilgi için bkz. Sorun giderme.
Platform başına yazı tipi özelliklerini ayarlama
OnPlatform
ve On
sınıfları platform başına yazı tipi özelliklerini ayarlamak için XAML'de kullanılabilir. Aşağıdaki örnek, her platformda farklı yazı tipi aileleri ve boyutları ayarlar:
<Label Text="Different font properties on different platforms"
FontSize="{OnPlatform iOS=20, Android=Medium, UWP=24}">
<Label.FontFamily>
<OnPlatform x:TypeArguments="x:String">
<On Platform="iOS" Value="MarkerFelt-Thin" />
<On Platform="Android" Value="Lobster-Regular" />
<On Platform="UWP" Value="ArimaMadurai-Black" />
</OnPlatform>
</Label.FontFamily>
</Label>
özelliği Device.RuntimePlatform
, platform başına yazı tipi özelliklerini ayarlamak için kodda kullanılabilir
Label label = new Label
{
Text = "Different font properties on different platforms"
};
label.FontSize = Device.RuntimePlatform == Device.iOS ? 20 :
Device.RuntimePlatform == Device.Android ? Device.GetNamedSize(NamedSize.Medium, label) : 24;
label.FontFamily = Device.RuntimePlatform == Device.iOS ? "MarkerFelt-Thin" :
Device.RuntimePlatform == Device.Android ? "Lobster-Regular" : "ArimaMadurai-Black";
Platforma özgü değerler sağlama hakkında daha fazla bilgi için bkz . Platforma özgü değerler sağlama. İşaretlemeyi genişletme hakkında OnPlatform
bilgi için bkz . OnPlatform işaretleme uzantısı.
Adlandırılmış yazı tipi boyutlarını anlama
Xamarin.Forms , numaralandırmada NamedSize
belirli yazı tipi boyutlarını temsil eden alanları tanımlar. Aşağıdaki tabloda üyeler ve iOS, Android ve Evrensel Windows Platformu (UWP) üzerindeki varsayılan boyutları gösterilmektedirNamedSize
:
Üye | iOS | Android | UWP |
---|---|---|---|
Default |
17 | 14 | 14 |
Micro |
12 | 10 | 15.667 |
Small |
14 | 14 | 18.667 |
Medium |
17 | 17 | 22.667 |
Large |
22 | 22 | 32 |
Body |
17 | 16 | 14 |
Header |
17 | 14 | 46 |
Title |
28 | 24 | 24 |
Subtitle |
22 | 16 | 20 |
Caption |
12 | 12 | 12 |
Boyut değerleri cihazdan bağımsız birimlerle ölçülür. Daha fazla bilgi için bkz . Ölçü Birimleri.
Not
iOS ve Android'de, adlandırılmış yazı tipi boyutları işletim sistemi erişilebilirlik seçeneklerine göre otomatik olarak ölçeklenir. Bu davranış, platforma özgü bir iOS ile devre dışı bırakılabilir. Daha fazla bilgi için bkz . iOS'ta Adlandırılmış Yazı Tipi Boyutları için Erişilebilirlik Ölçeklendirme.
Yazı tipi simgelerini görüntüleme
Yazı tipi simgeleri, bir FontImageSource
nesnedeki yazı tipi simgesi verileri belirtilerek uygulamalar tarafından Xamarin.Forms görüntülenebilir. sınıfından ImageSource
türetilen bu sınıf aşağıdaki özelliklere sahiptir:
Glyph
– yazı tipi simgesinin unicode karakter değeri, olarakstring
belirtilir.Size
double
– cihazdan bağımsız birimlerde işlenen yazı tipi simgesinin boyutunu gösteren bir değerdir. Varsayılan değer 30’dur. Ayrıca, bu özellik adlandırılmış yazı tipi boyutuna ayarlanabilir.FontFamily
string
– yazı tipi simgesinin ait olduğu yazı tipi ailesini temsil eden.Color
– yazı tipi simgesi görüntülenirken kullanılacak isteğe bağlıColor
bir değerdir.
Yazı tipi verileri, görüntüleyebilen herhangi bir ImageSource
görünüm tarafından görüntülenebilir. Bu yaklaşım, yazı tipi simgesinin görüntülenmesini sınırlandırmak yerine, emojiler gibi yazı tipi simgelerinin birden çok görünüm tarafından görüntülenmesine izin verir.Label
Önemli
Yazı tipi simgeleri şu anda yalnızca unicode karakter gösterimleriyle belirtilebilir.
Aşağıdaki XAML örneğinde bir görünüm tarafından görüntülenen tek bir Image
yazı tipi simgesi vardır:
<Image BackgroundColor="#D1D1D1">
<Image.Source>
<FontImageSource Glyph=""
FontFamily="{OnPlatform iOS=Ionicons, Android=ionicons.ttf#}"
Size="44" />
</Image.Source>
</Image>
Bu kod, Ionicons yazı tipi ailesinden bir XBox simgesini bir Image
görünümde görüntüler. Bu simgenin unicode karakteri olduğunda \uf30c
, XAML'de kaçış karakterine sahip olması ve bu şekilde olması 
gerektiğini unutmayın. Eşdeğer C# kodu:
Image image = new Image { BackgroundColor = Color.FromHex("#D1D1D1") };
image.Source = new FontImageSource
{
Glyph = "\uf30c",
FontFamily = Device.RuntimePlatform == Device.iOS ? "Ionicons" : "ionicons.ttf#",
Size = 44
};
Aşağıdaki ekran görüntüleri, bağlanabilir bir düzen tarafından görüntülenen birkaç yazı tipi simgesini gösterir: