Podsumowanie rozdziału 3. Większe zagłębienie w tekst
Uwaga
Ta książka została opublikowana wiosną 2016 roku i od tego czasu nie została zaktualizowana. Jest wiele w książce, która pozostaje cenna, ale niektóre materiały są nieaktualne, a niektóre tematy nie są już całkowicie poprawne ani kompletne.
W tym rozdziale Label
omówiono bardziej szczegółowy widok, w tym kolor, czcionki i formatowanie.
Zawijanie akapitów
Text
Gdy właściwość zawiera Label
długi tekst, Label
automatycznie opakowuje ją do wielu wierszy, jak pokazano w przykładzie Baskervilles. Możesz osadzić kody Unicode, takie jak "\u2014", dla znaków em-dash lub C#, takich jak "\r", aby przerwać do nowego wiersza.
HorizontalOptions
Gdy właściwości Label
i VerticalOptions
obiektu są ustawione na LayoutOptions.Fill
, ogólny rozmiar Label
obiektu jest zarządzany przez miejsce, które jego kontener udostępnia. Mówi Label
się, że jest ograniczony. Rozmiar kontenera Label
to rozmiar kontenera.
HorizontalOptions
Gdy właściwości i VerticalOptions
są ustawione na wartości inne niż LayoutOptions.Fill
, rozmiar Label
obiektu jest zarządzany przez miejsce wymagane do renderowania tekstu, do rozmiaru, który jego kontener udostępnia dla elementu Label
. Mówi Label
się, że nie jest ograniczony i określa swój własny rozmiar.
(Uwaga: ograniczenia i ograniczenia terminów mogą być sprzeczne z intuicją, ponieważ widok bez ograniczeń jest ogólnie mniejszy niż ograniczony widok. Ponadto te terminy nie są konsekwentnie używane we wczesnych rozdziałach książki).
Widok taki jak może Label
być ograniczony w jednym wymiarze i bez ograniczeń w drugim. Element Label
będzie zawijać tekst tylko w wielu wierszach, jeśli jest ograniczony w poziomie.
Jeśli element Label
jest ograniczony, może zajmować znacznie więcej miejsca niż wymagane dla tekstu. Tekst można umieścić w ogólnym obszarze obiektu Label
. HorizontalTextAlignment
Ustaw właściwość na element członkowski TextAlignment
wyliczenia (Start
, Center
, lub End
), aby kontrolować wyrównanie wszystkich wierszy akapitu. Wartość domyślna to Start
i dopasowuje tekst do lewej.
VerticalTextAlignment
Ustaw właściwość na element członkowski TextAlignment
wyliczenia, aby umieścić tekst w górnej, środkowej lub dolnej części obszaru zajmowanego Label
przez element .
LineBreakMode
Ustaw właściwość na element członkowski LineBreakMode
wyliczenia (WordWrap
, CharacterWrap
, , NoWrap
HeadTruncation
, MiddleTruncation
lub TailTruncation
), aby kontrolować, jak wiele wierszy w przerwaniu akapitu lub są obcięte.
Kolory tekstu i tła
TextColor
Ustaw właściwości Label
i BackgroundColor
wartości, Color
aby kontrolować kolor tekstu i tła.
Dotyczy BackgroundColor
tła całego obszaru zajmowanego przez Label
element . W zależności HorizontalOptions
od właściwości i VerticalOptions
rozmiar może być znacznie większy niż obszar wymagany do wyświetlenia tekstu. Możesz użyć koloru do eksperymentowania z różnymi wartościami HorizontalOptions
, VerticalOptions
, HorizontalExeAlignment
i VerticalTextAlignment
, aby zobaczyć, jak wpływają one na rozmiar i położenie Label
elementu , oraz rozmiar i położenie tekstu w obiekcie Label
.
Struktura kolorów
Struktura Color
pozwala określić kolory jako wartości Red-Green-Blue (RGB) lub Hue-Saturation-Luminosity (HSL) lub z nazwą koloru. Kanał alfa jest również dostępny, aby wskazać przezroczystość.
Użyj konstruktora Color
, aby określić:
Argumenty to double
wartości z zakresu od 0 do 1.
Możesz również użyć kilku metod statycznych, aby utworzyć Color
wartości:
Color.FromRgb
dladouble
wartości RGB z zakresu od 0 do 1Color.FromRgb
dla liczb całkowitych RGB z zakresu od 0 do 255Color.FromRgba
dladouble
wartości RGB z przezroczystościąColor.FromRgba
dla wartości integer RGB z przezroczystościąColor.FromHsla
dladouble
wartości HSL z przezroczystościąColor.FromUint
dla wartości obliczonejuint
jako (B + 256 * (G + 256 * (R + 256 * A))Color.FromHex
string
dla formatu cyfr szesnastowych w postaci "#AARRGGBB" lub "#RRGGBB" lub "#ARGB" lub "#RGB", gdzie każda litera odpowiada cyfrze szesnastkowej dla kanałów alfa, czerwony, zielony i niebieski. Ta metoda jest podstawowa używana do konwersji kolorów XAML, jak opisano w rozdziale 7, XAML a kod.
Po utworzeniu Color
wartość jest niezmienna. Właściwości koloru można uzyskać z następujących właściwości:
Są to wszystkie double
wartości z zakresu od 0 do 1.
Color
Definiuje również 240 publicznych pól statycznych tylko do odczytu dla typowych kolorów. W czasie, gdy książka została napisana, dostępne były tylko 17 wspólnych kolorów.
Inne publiczne pole statyczne tylko do odczytu definiuje kolor ze wszystkimi kanałami kolorów ustawionymi na zero:
Kilka metod wystąpienia umożliwia zmodyfikowanie istniejącego koloru w celu utworzenia nowego koloru:
Na koniec dwie statyczne właściwości tylko do odczytu definiują specjalną wartość koloru:
Color.Default
, wszystkie kanały ustawione na –1Color.Accent
Color.Default
ma na celu wymuszenie schematu kolorów platformy, a w związku z tym ma inne znaczenie w różnych kontekstach na różnych platformach. Domyślnie schematy kolorów platformy to:
- iOS: ciemny tekst na jasnym tle
- Android: jasny tekst na ciemnym tle (w książce) lub ciemny tekst na jasnym tle (w przypadku projektu materialnego za pośrednictwem aplikacji AppCompat w głównej gałęzi repozytorium przykładowego kodu)
- UWP: ciemny tekst na jasnym tle
Wartość Color.Accent
powoduje użycie koloru specyficznego dla platformy (a czasami wybieranego przez użytkownika), który jest widoczny na ciemnym lub jasnym tle.
Zmienianie schematu kolorów aplikacji
Różne platformy mają domyślny schemat kolorów, jak pokazano na powyższej liście.
W przypadku określania elementu docelowego dla systemu Android można przełączyć się na schemat ciemny na światło, określając motyw jasny w pliku Android.Manifest.xml.
W przypadku platform systemu Windows motyw kolorów jest zwykle wybierany przez użytkownika, ale można dodać RequestedTheme
atrybut ustawiony na Light
wartość lub Dark
w pliku App.xaml platformy. Domyślnie plik App.xaml w projekcie platformy UWP zawiera RequestedTheme
atrybut ustawiony na Light
wartość .
Rozmiary i atrybuty czcionek
FontFamily
Ustaw właściwość na ciąg, Label
taki jak "Times Roman", aby wybrać rodzinę czcionek. Należy jednak określić rodzinę czcionek obsługiwaną na określonej platformie, a platformy są niespójne w tym zakresie.
FontSize
Ustaw właściwość Label
na , double
aby określić przybliżoną wysokość czcionki. Aby uzyskać więcej informacji na temat inteligentnego wybierania rozmiarów czcionek, zobacz Rozdział 5. Praca z rozmiarami.
Alternatywnie można uzyskać jeden z kilku wstępnie ustawionych rozmiarów czcionek zależnych od platformy. Metoda statyczna Device.GetNamedSize
i przeciążenie zwracają double
wartość rozmiaru czcionki odpowiednią dla platformy na podstawie elementów NamedSize
członkowskich wyliczenia (Default
, Micro
, Small
, Medium
i Large
). Wartość zwrócona z elementu Medium
członkowskiego nie musi być taka sama jak Default
. Przykład NamedFontSizes wyświetla tekst o tych nazwanych rozmiarach.
FontAttributes
Ustaw właściwość elementu Label
na element członkowski tych FontAttributes
wyliczeń, Bold
, Italic
lub None
. Można połączyć Bold
elementy i Italic
z operatorem OR bitowym języka C#.
Sformatowany tekst
We wszystkich przykładach do tej pory cały tekst wyświetlany przez obiekt Label
został sformatowany jednolicie. Aby zmienić formatowanie w ciągu tekstowym, nie ustawiaj Text
właściwości Label
. Zamiast tego ustaw FormattedText
właściwość na obiekt typu FormattedString
.
FormattedString
Spans
ma właściwość, która jest kolekcją Span
obiektów. Każdy Span
obiekt ma własne Text
właściwości , , FontFamily
, FontAttributes
FontSize
, ForegroundColor
i BackgroundColor
.
W przykładzie VariableFormattedText pokazano użycie FormattedText
właściwości dla pojedynczego wiersza tekstu, a parametr VariableFormattedParagraph przedstawia technikę całego akapitu, jak pokazano poniżej:
Program NamedFontSizes używa pojedynczego Label
obiektu i FormattedString
do wyświetlania wszystkich nazwanych rozmiarów czcionek dla każdej platformy.