Udostępnij za pośrednictwem


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 Labelprzez element .

LineBreakMode Ustaw właściwość na element członkowski LineBreakMode wyliczenia (WordWrap, CharacterWrap, , NoWrapHeadTruncation, MiddleTruncationlub 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 Labelelement . 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, HorizontalExeAlignmenti VerticalTextAlignment , aby zobaczyć, jak wpływają one na rozmiar i położenie Labelelementu , 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 dla double wartości RGB z zakresu od 0 do 1
  • Color.FromRgb dla liczb całkowitych RGB z zakresu od 0 do 255
  • Color.FromRgba dla double wartości RGB z przezroczystością
  • Color.FromRgba dla wartości integer RGB z przezroczystością
  • Color.FromHsla dla double wartości HSL z przezroczystością
  • Color.FromUint dla wartości obliczonej uint jako (B + 256 * (G + 256 * (R + 256 * A))
  • Color.FromHexstring 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 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 Lightwartość .

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, Mediumi 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, Italiclub 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.

FormattedStringSpans ma właściwość, która jest kolekcją Span obiektów. Każdy Span obiekt ma własne Textwłaściwości , , FontFamily, FontAttributesFontSize, ForegroundColori 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:

Potrójny zrzut ekranu przedstawiający akapit sformatowany w zmiennej

Program NamedFontSizes używa pojedynczego Label obiektu i FormattedString do wyświetlania wszystkich nazwanych rozmiarów czcionek dla każdej platformy.