Shrnutí kapitoly 3. Hlouběji do textu
Poznámka:
Tato kniha byla publikována na jaře roku 2016 a od té doby nebyla aktualizována. Existuje mnoho v knize, která zůstává cenná, ale některé materiály jsou zastaralé a některá témata už nejsou zcela správná nebo úplná.
Tato kapitola zkoumá Label
zobrazení podrobněji, včetně barev, písem a formátování.
Zabalení odstavců
Pokud vlastnost Label
obsahuje dlouhý text, automaticky ho zalomí na více řádků, Label
jak ukazuje ukázka Baskervilles.Text
Kódy Unicode, jako je \u2014, můžete vložit pro em-dash nebo znaky C#, jako je \r, aby se přerušily na nový řádek.
Pokud jsou nastaveny HorizontalOptions
LayoutOptions.Fill
vlastnosti a VerticalOptions
vlastnosti Label
, celková velikost objektu Label
je řízena prostorem, který jeho kontejner zpřístupní. Říká Label
se, že je omezený. Velikost Label
kontejneru je velikost.
HorizontalOptions
Pokud jsou vlastnosti VerticalOptions
nastaveny na jiné hodnoty než LayoutOptions.Fill
, velikost objektu Label
je řízena mezerou potřebnou k vykreslení textu, až do velikosti, kterou její kontejner zpřístupní .Label
Říká Label
se, že je unconstrained a určuje svou vlastní velikost.
(Poznámka: Termíny omezené a nepřitrénované můžou být čítače intuitivní, protože zobrazení bez omezení je obecně menší než omezené zobrazení. Tyto termíny se také nepoužívají konzistentně v počátečních kapitolách knihy.)
Zobrazení, jako Label
je například, může být omezeno v jedné dimenzi a v druhé nekontrénováno. Text bude Label
zalamovat pouze na více řádcích, pokud je omezen vodorovně.
Label
Pokud je omezení, může zabírat výrazně více místa, než je požadováno pro text. Text lze umístit do celkové oblasti objektu Label
. HorizontalTextAlignment
Nastavte vlastnost na člen výčtu TextAlignment
(Start
, Center
nebo End
) pro řízení zarovnání všech řádků odstavce. Výchozí hodnota je Start
a text zarovná doleva.
VerticalTextAlignment
Nastavte vlastnost na člen výčtu TextAlignment
pro umístění textu v horní, střední nebo dolní části oblasti obsazené objektem Label
.
LineBreakMode
Nastavte vlastnost na člen výčtu LineBreakMode
(WordWrap
, CharacterWrap
, NoWrap
, HeadTruncation
, MiddleTruncation
, nebo TailTruncation
) řídit, jak více řádků v konců odstavce nebo jsou zkráceny.
Barvy textu a pozadí
TextColor
Nastavte hodnoty a BackgroundColor
vlastnosti Label
takColor
, aby se řídila barva textu a pozadí.
Platí BackgroundColor
pro pozadí celé oblasti obsazené objektem Label
. V závislosti na vlastnostech HorizontalOptions
a VerticalOptions
vlastnostech může být tato velikost výrazně větší než oblast potřebná k zobrazení textu. Barvu můžete použít k experimentování s různými hodnotami , , a zjistit, jak ovlivňují velikost a umístění Label
, a velikost a umístění textu v rámci Label
.VerticalTextAlignment
HorizontalExeAlignment
VerticalOptions
HorizontalOptions
The Color structure
Tato Color
struktura umožňuje zadat barvy jako hodnoty red-green-blue (RGB) nebo hodnoty Hue-Saturation-Luminosity (HSL) nebo s názvem barvy. K dispozici je také alfa kanál, který označuje průhlednost.
K určení použijte Color
konstruktor:
Argumenty jsou double
hodnoty od 0 do 1.
K vytvoření Color
hodnot můžete použít také několik statických metod:
Color.FromRgb
prodouble
hodnoty RGB od 0 do 1Color.FromRgb
pro celočíselné hodnoty RGB od 0 do 255Color.FromRgba
prodouble
hodnoty RGB s průhlednostíColor.FromRgba
pro celočíselné hodnoty RGB s průhlednostíColor.FromHsla
prodouble
hodnoty HSL s průhlednostíColor.FromUint
pro hodnotu vypočítanouuint
jako (B + 256 * (G + 256 * (R + 256 * A)))Color.FromHex
string
formát šestnáctkových číslic ve tvaru "#AARRGGBB" nebo "#RRGGBB" nebo "#ARGB" nebo "#RGB", kde každé písmeno odpovídá šestnáctkové číslici pro alfa, červenou, zelenou a modrou. Tato metoda se primárně používá pro převody barev XAML, jak je popsáno v kapitole 7, XAML vs. kódu.
Po vytvoření Color
je hodnota neměnná. Vlastnosti barvy lze získat z následujících vlastností:
Jedná se o všechny double
hodnoty od 0 do 1.
Color
definuje také 240 veřejných statických polí jen pro čtení pro běžné barvy. V době, kdy byla kniha napsána, byly k dispozici pouze 17 běžných barev.
Další veřejné statické pole jen pro čtení definuje barvu se všemi barevnými kanály nastavenými na nulu:
Několik metod instance umožňuje úpravě existující barvy vytvořit novou barvu:
Nakonec dvě statické vlastnosti jen pro čtení definují speciální hodnotu barvy:
Color.Default
, všechny kanály nastavené na –1Color.Accent
Color.Default
je určen k vynucení barevného schématu platformy a v důsledku toho má jiný význam v různých kontextech na různých platformách. Ve výchozím nastavení jsou barevná schémata platformy:
- iOS: Tmavý text na světlém pozadí
- Android: Světlý text na tmavém pozadí (v knize) nebo tmavý text na světlém pozadí (pro návrh materiálu přes AppCompat v hlavní větvi úložiště vzorového kódu)
- UPW: Tmavý text na světlém pozadí
Výsledkem Color.Accent
hodnoty je barva specifická pro konkrétní platformu (a někdy se dá vybrat uživatelem), která je viditelná na tmavém nebo světlém pozadí.
Změna barevného schématu aplikace
Různé platformy mají výchozí barevné schéma, jak je znázorněno v seznamu výše.
Při cílení na Android je možné přepnout do tmavého světlého schématu zadáním světlého motivu v souboru Android.Manifest.xml.
U platforem Windows je barevný motiv obvykle vybraný uživatelem, ale můžete přidat RequestedTheme
atribut nastavený na buď Light
nebo Dark
do souboru App.xaml platformy. Ve výchozím nastavení soubor App.xaml v projektu UPW obsahuje RequestedTheme
atribut nastavený na Light
.
Velikosti a atributy písma
FontFamily
Nastavte vlastnost Label
na řetězec, například Times Roman, a vyberte rodinu písem. Je však nutné zadat rodinu písem, která je podporována na konkrétní platformě, a platformy jsou v tomto ohledu nekonzistentní.
FontSize
Nastavte vlastnost Label
pro double
zadání přibližné výšky písma. Další podrobnosti o inteligentním výběru velikostí najdete v kapitole 5, práce s velikostmi.
Alternativně můžete získat jednu z několika přednastavených velikostí písem závislých na platformě. Statická Device.GetNamedSize
metoda a přetížení vrátí double
hodnotu velikosti písma odpovídající platformě na základě členů výčtu NamedSize
(Default
, , Micro
Small
, Medium
a Large
). Hodnota vrácená ze člena Medium
nemusí být nutně stejná jako Default
. Ukázka NamedFontSizes zobrazí text s těmito pojmenovanými velikostmi.
FontAttributes
Nastavte vlastnost Label
na člena tohoto FontAttributes
výčtu, Bold
, Italic
, nebo None
. Členy a Italic
členy můžete kombinovat Bold
s bitovým operátorem OR jazyka C#.
Formátovaný text
Ve všech dosud uvedených příkladech byl celý text zobrazený jednotným formátováním Label
. Pokud chcete formátování v textovém řetězci lišit, nenastavujte Text
vlastnost Label
. Místo toho nastavte FormattedText
vlastnost na objekt typu FormattedString
.
FormattedString
Spans
má vlastnost, která je kolekcí Span
objektů. Každý Span
objekt má svůj vlastní Text
objekt , , FontAttributes
FontFamily
FontSize
, , ForegroundColor
, , a BackgroundColor
vlastnosti.
Ukázka VariableFormattedText ukazuje použití FormattedText
vlastnosti pro jeden řádek textu a VariableFormattedParagraph ukazuje techniku pro celý odstavec, jak je znázorněno zde:
Program NamedFontSizes používá jeden Label
a FormattedString
objekt k zobrazení všech pojmenovaných velikostí písem pro každou platformu.