Písma v souboru Xamarin.Forms
Ve výchozím nastavení Xamarin.Forms používá systémové písmo definované jednotlivými platformami. Ovládací prvky, které zobrazují text, ale definují vlastnosti, které můžete použít ke změně tohoto písma:
FontAttributes, typuFontAttributes, což je výčet se třemi členy: , aNoneBoldItalic. Výchozí hodnota této vlastnosti jeNone.FontSize, typudouble.FontFamily, typustring.
Tyto vlastnosti jsou zálohovány objekty, což znamená, že mohou být cíle datových vazeb a BindableProperty mají styl.
Nastavení atributů písma
Ovládací prvky, které zobrazují text, mohou nastavit FontAttributes vlastnost pro určení atributů písma:
<Label Text="Italics"
FontAttributes="Italic" />
<Label Text="Bold and italics"
FontAttributes="Bold, Italic" />
Ekvivalentní kód jazyka C# je:
Label label1 = new Label
{
Text = "Italics",
FontAttributes = FontAttributes.Italic
};
Label label2 = new Label
{
Text = "Bold and italics",
FontAttributes = FontAttributes.Bold | FontAttributes.Italic
};
Nastavení velikosti písma
Ovládací prvky, které zobrazují text, FontSize mohou nastavit vlastnost a určit velikost písma. Vlastnost FontSize lze nastavit přímo na hodnotu nebo doubleNamedSize hodnotou výčtu:
<Label Text="Font size 24"
FontSize="24" />
<Label Text="Large font size"
FontSize="Large" />
Ekvivalentní kód jazyka C# je:
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))
};
Případně má metoda Device.GetNamedSize přepsání, které určuje druhý argument jako Element :
Label myLabel = new Label
{
Text = "Large font size",
};
myLabel.FontSize = Device.GetNamedSize(NamedSize.Large, myLabel);
Poznámka
Hodnota zadaná jako se měří v jednotkách FontSizedouble nezávislých na zařízení. Další informace najdete v tématu Měrné jednotky.
Další informace o pojmenovaných velikostech písem najdete v tématu Principy pojmenovaných velikostí písem.
Nastavení rodiny písem
Ovládací prvky, které zobrazují text, mohou nastavit vlastnost na název rodiny FontFamily písem, například "Times Roman". To však bude fungovat pouze v případě, že je tato rodina písem podporována na konkrétní platformě.
Existuje řada technik, které lze použít k pokusu o odvození písem dostupných na platformě. Přítomnost souboru písma TTF (true type format) ale nemusí nutně znamenat rodinu písem a často se zahrnou soubory TTF, které nejsou určené pro použití v aplikacích. Kromě toho se písma nainstalovaná na platformě mohou měnit s verzí platformy. Proto nejspolehlivějším přístupem k určení rodiny písem je použití vlastního písma.
Vlastní písma je možné přidat do sdíleného projektu a Xamarin.Forms využívat v projektech platformy bez jakékoli další práce. Postup je následující:
- Přidejte písmo do Xamarin.Forms sdíleného projektu jako vložený prostředek (Xamarin.Forms).
- Zaregistrujte soubor písma v sestavení v souboru, jako je například AssemblyInfo.cs, pomocí atributu . Je také možné zadat volitelný alias.
Následující příklad ukazuje Lobster-Regular, které je registrováno u sestavení, spolu s aliasem:
using Xamarin.Forms;
[assembly: ExportFont("Lobster-Regular.ttf", Alias = "Lobster")]
Poznámka
Písmo se může nacházet v libovolné složce ve sdíleném projektu, aniž by bylo nutné při registraci písma v sestavení zadat název složky.
V Windows se název souboru písem a název písma může lišit. Pokud chcete zjistit název písma v Windows, klikněte pravým tlačítkem na soubor .ttf a vyberte Náhled. Název písma pak můžete určit z okna náhledu.
Písmo se pak může používat na každé platformě odkazováním na jeho název bez přípony souboru:
<!-- Use font name -->
<Label Text="Hello Xamarin.Forms"
FontFamily="Lobster-Regular" />
Další možností je použít ji na každé platformě odkazem na svůj alias:
<!-- Use font alias -->
<Label Text="Hello Xamarin.Forms"
FontFamily="Lobster" />
Ekvivalentní kód jazyka C# je:
// 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"
};
Následující snímky obrazovky ukazují vlastní písmo:
Důležité
V případě sestavení verze Windows, ujistěte se, že sestavení obsahující vlastní písmo je předáno jako argument ve Forms.Init volání metody. Další informace naleznete v tématu Poradce při potížích.
Nastavení vlastností písma pro každou platformu
Třídy OnPlatformOn a lze použít v jazyce XAML k nastavení vlastností písma pro každou platformu. Následující příklad nastavuje různé rodiny písem a velikosti na jednotlivých platformách:
<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>
Vlastnost Device.RuntimePlatform lze použít v kódu k nastavení vlastností písma pro každou platformu.
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";
Další informace o poskytování hodnot specifických pro platformu najdete v tématu Zadání hodnot specifických pro platformu. Informace o rozšíření OnPlatform značek najdete v tématu OnPlatform
Principy pojmenovaných velikostí písem
Xamarin.Forms definuje pole ve NamedSize výčtu, která představují konkrétní velikosti písem. Následující tabulka uvádí členy a jejich výchozí velikosti v NamedSize iOSu, Androidu a Univerzální platformě Windows Platform (UPW):
| Člen | 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 | 96 | 46 |
Title |
28 | 24 | 24 |
Subtitle |
22 | 16 | 20 |
Caption |
12 | 12 | 12 |
Hodnoty velikosti se měří v jednotkách nezávislých na zařízení. Další informace najdete v tématu Měrné jednotky.
Poznámka
V iOSu a Androidu se pojmenované velikosti písem budou automaticky škálovat na základě možností přístupnosti operačního systému. Toto chování je možné v iOSu zakázat s konkrétní platformou. Další informace najdete v tématu Škálování přístupnosti pro pojmenované velikosti písem v iOSu.
Zobrazení ikon písem
Ikony písma mohou být v Xamarin.Forms aplikacích zobrazeny zadáním dat ikony písma v FontImageSource objektu. Tato třída, která je odvozena ImageSource z třídy , má následující vlastnosti:
Glyph– hodnota znaku Unicode ikony písma zadaná jakostring.Size– hodnota, která označuje velikost vykreslené ikony písma v jednotkách nezávislýchdoublena zařízení. Výchozí hodnota je 30. Kromě toho lze tuto vlastnost nastavit na pojmenovanou velikost písma.FontFamily– představujestringrodinu písem, ke které patří ikona písma.Color– volitelnáColorhodnota, která se má použít při zobrazení ikony písma.
Tato data se používají k vytvoření PNG, který lze zobrazit libovolným zobrazením, které může zobrazit ImageSource . Tento přístup umožňuje zobrazení ikon písem, jako jsou například emoji, ve více zobrazeních, a nikoli omezit zobrazení ikony písma na jeden text zobrazující zobrazení, například Label .
Důležité
Ikony písem je aktuálně možné zadat pouze pomocí jejich reprezentace znaků Unicode.
Následující příklad XAML má jednu ikonu písma zobrazenou Image zobrazením:
<Image BackgroundColor="#D1D1D1">
<Image.Source>
<FontImageSource Glyph=""
FontFamily="{OnPlatform iOS=Ionicons, Android=ionicons.ttf#}"
Size="44" />
</Image.Source>
</Image>
Tento kód zobrazí v zobrazení ikonu XBox z rodiny písem Image Ionicons. Všimněte si, že zatímco znak Unicode pro tuto ikonu je , musí být v XAML uvozena, \uf30c takže se změní na  . Ekvivalentní kód jazyka C# je:
Image image = new Image { BackgroundColor = Color.FromHex("#D1D1D1") };
image.Source = new FontImageSource
{
Glyph = "\uf30c",
FontFamily = Device.RuntimePlatform == Device.iOS ? "Ionicons" : "ionicons.ttf#",
Size = 44
};
Následující snímky obrazovky z ukázky Rozložení s možností vazby zobrazují několik ikon písem, které se zobrazují v rozložení s možností vazby:
a Androidu Ikony písma zobrazené
Stažení ukázky
a