第 3 章的摘要。 Deeper into text
注意
這本書於2016年春季出版,此後一直沒有更新。 這本書中有很多仍然有價值,但一些材料已經過時,有些主題不再完全正確或完整。
本章會 Label
更深入地探索檢視,包括色彩、字型和格式設定。
換行段落
當 Text
的 屬性包含長文字時,Label
會自動將它包裝成多行,如Baskervilles範例所示。Label
您可以將 '\u2014' 等 Unicode 程式代碼內嵌為 em-dash,或類似 '\r' 的 C# 字元,以中斷至新行。
當 的 HorizontalOptions
和 VerticalOptions
屬性 Label
設定為 LayoutOptions.Fill
時,的整體大小 Label
會受到其容器可供使用的空間所控管。 據說這是Label
限制的。 的大小 Label
是其容器的大小。
HorizontalOptions
當 和 VerticalOptions
屬性設定為 以外的LayoutOptions.Fill
值時,的大小Label
會受到轉譯文字所需的空間所控管,其容器可供 Label
使用的大小。 據說這是Label
不受限制的,它決定它自己的大小。
(注意:限制和不受限制的詞彙可能是反直覺的,因為不受限制的檢視通常小於限制檢視。此外,這些詞彙在這本書的早期章節中並未一致使用。
例如 Label
的檢視可以限制在一個維度中,而另一個維度則不受限制。 Label
只有在水準限制文字時,才會在多行上換行。
Label
如果 受限制,它可能會佔用比文字所需的空間要多得多。 文字可以放置在 的整體區域內 Label
。 將 HorizontalTextAlignment
屬性設定為 TextAlignment
列舉的成員 (Start
、 Center
或 End
) 以控制段落所有行的對齊方式。 預設值為 Start
,並將文字靠左對齊。
將 VerticalTextAlignment
屬性設定為 列舉的成員 TextAlignment
,以將文字放置在 所 Label
佔用區域的頂端、中央或底部。
將 LineBreakMode
屬性設定為LineBreakMode
列舉的成員(WordWrap
、 HeadTruncation
NoWrap
MiddleTruncation
CharacterWrap
或 TailTruncation
),以控制段落中斷或截斷多行的方式。
文字和背景色彩
將 的 TextColor
和 BackgroundColor
屬性 Label
設定為 Color
值,以控制文字和背景的色彩。
BackgroundColor
適用於所佔用Label
之整個區域的背景。 視 HorizontalOptions
和 VerticalOptions
屬性而定,該大小可能會比顯示文字所需的區域大得多。 您可以使用色彩來實驗、、 與的各種值HorizontalOptions
,以瞭解它們如何影響的大小和位置,以及文字在內Label
的大小和位置Label
。VerticalTextAlignment
HorizontalExeAlignment
VerticalOptions
Color 結構
結構 Color
可讓您將色彩指定為紅色-綠色-藍色 (RGB) 值,或色彩名稱為 Hue-Saturation-Luminosity (HSL) 值。 Alpha 色板也可用來表示透明度。
使用建 Color
構函式來指定:
- 灰色 陰影
- RGB 值
- 具有透明度的 RGB 值
自變數是 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.FromUint
uint
針對計算為的值(B+ 256 * (G + 256 * (R + 256 * A)) )Color.FromHex
string
格式為 「#AARRGGBB」 或 「#RRGGBB」 或 「#ARGB」 或 「#RGB」 格式的十六進位數位,其中每個字母會對應至 alpha、紅色、綠色和藍色通道的十六進位數位。 此方法主要用於 XAML 色彩轉換,如第 7 章 XAML 與程式代碼所述。
建立之後, Color
值是不可變的。 色彩的特性可以從下列屬性取得:
這些都是從 0 到 1 的所有 double
值。
Color
也會針對一般色彩定義 240 個公用靜態只讀字段。 書寫時,只有17種常見顏色可供使用。
另一個公用靜態唯讀欄位會定義所有色彩通道設為零的色彩:
數個實例方法允許修改現有的色彩來建立新的色彩:
最後,兩個靜態只讀屬性會定義特殊色彩值:
Color.Default
,所有通道都設定為 –1Color.Accent
Color.Default
旨在強制執行平臺的色彩配置,因此在不同平臺上的不同內容中有不同的意義。 平臺色彩設定預設為:
- iOS:淺色背景上的深色文字
- Android:淺色背景的淺色文字(在書籍中)或淺色背景上的深色文字(適用於範例程式代碼存放庫主要分支的 AppCompat 的材質設計)
- UWP:淺色背景上的深色文字
此值 Color.Accent
會產生平臺特定的色彩(有時是用戶可選取的)色彩,在深色或淺色背景上可見。
變更應用程式色彩配置
各種平臺都有預設色彩配置,如上述清單所示。
以 Android 為目標時,可以藉由在 Android.Manifest.xml 檔案中指定淺色主題,切換至深光配置。
針對 Windows 平臺,色彩主題通常是由用戶選取,但您可以將屬性設定為Light
或Dark
平臺的 App.xaml 檔案中新增RequestedTheme
。 根據預設,UWP 專案中的 App.xaml 檔案包含 RequestedTheme
設定為 Light
的屬性。
字型大小和屬性
將 FontFamily
的 Label
屬性設定為字串,例如 「Times Roman」 以選取字型系列。 不過,您必須指定特定平台上支援的字型系列,而平臺在這方面不一致。
將 FontSize
的 Label
屬性設定為 double
,以指定字型的近似高度。 如需以智慧方式選擇字型大小的詳細資訊,請參閱 處理大小第 5 章。
或者,您也可以取得數個預設平臺相依字型大小的其中一個。 靜態Device.GetNamedSize
方法和多載都會根據列舉的成員 (Default
、 、 Small
Micro
、 Medium
和 Large
) 傳回double
適合平臺的NamedSize
字型大小值。 從 Medium
成員傳回的值不一定與 Default
相同。 NamedFontSizes 範例會顯示具有這些具名大小的文字。
將 FontAttributes
的 Label
屬性設定為這些 FontAttributes
列舉、 Bold
、 Italic
或 None
的成員。 您可以將和 Italic
成員與 C# 位 OR 運算子結合Bold
。
格式化文字
到目前為止,在所有範例中,所 Label
顯示的整個文字都已統一格式化。 若要變更文字字串內的格式設定,請勿設定 Text
的 Label
屬性。 相反地,將 FormattedText
屬性設定為 類型的 FormattedString
物件。
FormattedString
Spans
具有物件集合的屬性Span
。 每個Span
物件都有自己的 Text
、FontFamily
、、FontSize
FontAttributes
、、 ForegroundColor
和 BackgroundColor
屬性。
VariableFormattedText 範例示範使用FormattedText
單行文字的 屬性,而 VariableFormattedParagraph 示範整個段落的技術,如下所示:
NamedFontSizes 程式會使用單Label
一FormattedString
和 對象來顯示每個平臺的所有具名字號。