Sdílet prostřednictvím


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.Fillvlastnosti 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, Centernebo 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 HorizontalExeAlignmentVerticalOptionsHorizontalOptions

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 pro double hodnoty RGB od 0 do 1
  • Color.FromRgb pro celočíselné hodnoty RGB od 0 do 255
  • Color.FromRgba pro double hodnoty RGB s průhledností
  • Color.FromRgba pro celočíselné hodnoty RGB s průhledností
  • Color.FromHsla pro double hodnoty HSL s průhledností
  • Color.FromUint pro hodnotu vypočítanou uint jako (B + 256 * (G + 256 * (R + 256 * A)))
  • Color.FromHexstring 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 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, , MicroSmall, Mediuma 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.

FormattedStringSpans má vlastnost, která je kolekcí Span objektů. Každý Span objekt má svůj vlastní Textobjekt , , FontAttributesFontFamilyFontSize, , 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:

Trojitý snímek obrazovky s odstavcem formátovaným proměnným

Program NamedFontSizes používá jeden Label a FormattedString objekt k zobrazení všech pojmenovaných velikostí písem pro každou platformu.