共用方式為


第 3 章的摘要。 Deeper into text

注意

這本書於2016年春季出版,此後一直沒有更新。 這本書中有很多仍然有價值,但一些材料已經過時,有些主題不再完全正確或完整。

本章會 Label 更深入地探索檢視,包括色彩、字型和格式設定。

換行段落

Text 的 屬性包含長文字時,Label會自動將它包裝成多行,如Baskervilles範例所示Label 您可以將 '\u2014' 等 Unicode 程式代碼內嵌為 em-dash,或類似 '\r' 的 C# 字元,以中斷至新行。

當 的 HorizontalOptionsVerticalOptions 屬性 Label 設定為 LayoutOptions.Fill時,的整體大小 Label 會受到其容器可供使用的空間所控管。 據說這是Label限制的。 的大小 Label 是其容器的大小。

HorizontalOptions當 和 VerticalOptions 屬性設定為 以外的LayoutOptions.Fill值時,的大小Label會受到轉譯文字所需的空間所控管,其容器可供 Label使用的大小。 據說這是Label不受限制的,它決定它自己的大小。

(注意:限制不受限制的詞彙可能是反直覺的,因為不受限制的檢視通常小於限制檢視。此外,這些詞彙在這本書的早期章節中並未一致使用。

例如 Label 的檢視可以限制在一個維度中,而另一個維度則不受限制。 Label只有在水準限制文字時,才會在多行上換行。

Label如果 受限制,它可能會佔用比文字所需的空間要多得多。 文字可以放置在 的整體區域內 Label。 將 HorizontalTextAlignment 屬性設定為 TextAlignment 列舉的成員 (StartCenterEnd) 以控制段落所有行的對齊方式。 預設值為 Start ,並將文字靠左對齊。

VerticalTextAlignment 屬性設定為 列舉的成員 TextAlignment ,以將文字放置在 所 Label佔用區域的頂端、中央或底部。

LineBreakMode 屬性設定為LineBreakMode列舉的成員(WordWrapHeadTruncationNoWrapMiddleTruncationCharacterWrapTailTruncation),以控制段落中斷或截斷多行的方式。

文字和背景色彩

將 的 TextColorBackgroundColor 屬性 Label 設定為 Color 值,以控制文字和背景的色彩。

BackgroundColor適用於所佔用Label之整個區域的背景。 視 HorizontalOptionsVerticalOptions 屬性而定,該大小可能會比顯示文字所需的區域大得多。 您可以使用色彩來實驗、、 與的各種值HorizontalOptions,以瞭解它們如何影響的大小和位置,以及文字在內Label的大小和位置LabelVerticalTextAlignment HorizontalExeAlignmentVerticalOptions

Color 結構

結構 Color 可讓您將色彩指定為紅色-綠色-藍色 (RGB) 值,或色彩名稱為 Hue-Saturation-Luminosity (HSL) 值。 Alpha 色板也可用來表示透明度。

使用建 Color 構函式來指定:

自變數是 double 介於 0 到 1 的值。

您也可以使用數個靜態方法來建立 Color 值:

  • Color.FromRgb 針對從 0 到 1 的 double RGB 值
  • Color.FromRgb 從 0 到 255 的整數 RGB 值
  • Color.FromRgba 針對 double 具有透明度的 RGB 值
  • Color.FromRgba 針對具有透明度的整數 RGB 值
  • Color.FromHsla 針對 double 具有透明度的 HSL 值
  • Color.FromUintuint針對計算為的值(B+ 256 * (G + 256 * (R + 256 * A)) )
  • Color.FromHexstring格式為 「#AARRGGBB」 或 「#RRGGBB」 或 「#ARGB」 或 「#RGB」 格式的十六進位數位,其中每個字母會對應至 alpha、紅色、綠色和藍色通道的十六進位數位。 此方法主要用於 XAML 色彩轉換,如第 7 章 XAML 與程式代碼所述

建立之後, Color 值是不可變的。 色彩的特性可以從下列屬性取得:

這些都是從 0 到 1 的所有 double 值。

Color 也會針對一般色彩定義 240 個公用靜態只讀字段。 書寫時,只有17種常見顏色可供使用。

另一個公用靜態唯讀欄位會定義所有色彩通道設為零的色彩:

數個實例方法允許修改現有的色彩來建立新的色彩:

最後,兩個靜態只讀屬性會定義特殊色彩值:

Color.Default 旨在強制執行平臺的色彩配置,因此在不同平臺上的不同內容中有不同的意義。 平臺色彩設定預設為:

  • iOS:淺色背景上的深色文字
  • Android:淺色背景的淺色文字(在書籍中)或淺色背景上的深色文字(適用於範例程式代碼存放庫主要分支的 AppCompat 的材質設計)
  • UWP:淺色背景上的深色文字

此值 Color.Accent 會產生平臺特定的色彩(有時是用戶可選取的)色彩,在深色或淺色背景上可見。

變更應用程式色彩配置

各種平臺都有預設色彩配置,如上述清單所示。

以 Android 為目標時,可以藉由在 Android.Manifest.xml 檔案中指定淺色主題,切換至深光配置。

針對 Windows 平臺,色彩主題通常是由用戶選取,但您可以將屬性設定為LightDark平臺的 App.xaml 檔案中新增RequestedTheme。 根據預設,UWP 專案中的 App.xaml 檔案包含 RequestedTheme 設定為 Light的屬性。

字型大小和屬性

FontFamilyLabel 屬性設定為字串,例如 「Times Roman」 以選取字型系列。 不過,您必須指定特定平台上支援的字型系列,而平臺在這方面不一致。

FontSizeLabel 屬性設定為 double ,以指定字型的近似高度。 如需以智慧方式選擇字型大小的詳細資訊,請參閱 處理大小第 5 章。

或者,您也可以取得數個預設平臺相依字型大小的其中一個。 靜態Device.GetNamedSize方法和多載都會根據列舉的成員 (Default、 、 SmallMicroMediumLarge) 傳回double適合平臺的NamedSize字型大小值。 從 Medium 成員傳回的值不一定與 Default相同。 NamedFontSizes 範例會顯示具有這些具名大小的文字。

FontAttributesLabel 屬性設定為這些 FontAttributes 列舉、 BoldItalicNone的成員。 您可以將和 Italic 成員與 C# 位 OR 運算子結合Bold

格式化文字

到目前為止,在所有範例中,所 Label 顯示的整個文字都已統一格式化。 若要變更文字字串內的格式設定,請勿設定 TextLabel屬性。 相反地,將 FormattedText 屬性設定為 類型的 FormattedString物件。

FormattedStringSpans具有物件集合的屬性Span。 每個Span物件都有自己的 TextFontFamily、、FontSizeFontAttributes、、 ForegroundColorBackgroundColor 屬性。

VariableFormattedText 範例示範使用FormattedText單行文字的 屬性,而 VariableFormattedParagraph 示範整個段落的技術,如下所示:

變數格式化段落的三重螢幕快照

NamedFontSizes 程式會使用單LabelFormattedString和 對象來顯示每個平臺的所有具名字號。