尽管多么复杂的图形用户界面已经成为现实,文本仍然是大多数应用程序的支柱。 然而,文本可能是最复杂的视觉对象之一,因为它带有数百年印刷术的包袱。 主要的考虑是文本必须是可读的。 这就要求文字不要太小,文字不能太大,否则会在屏幕上占据很大的空间。
由于这些原因,在随后的几章中继续讨论文本的主题,最着名的是第5章“处理大小”。Xamarin.Forms程序员经常在样式中定义字体特性,这是第12章的主题。
包装段落
显示一段文字就像显示一行文字一样简单。 只要使文本足够长,以包装成多行:
点击(此处)折叠或打开
public class BaskervillesPage : ContentPage
{
public BaskervillesPage()
{
Content = new Label
{
VerticalOptions = LayoutOptions.Center,
Text =
"Mr. Sherlock Holmes, who was usually very late in " +
"the mornings, save upon those not infrequent " +
"occasions when he was up all night, was seated at " +
"the breakfast table. I stood upon the hearth-rug " +
"and picked up the stick which our visitor had left " +
"behind him the night before. It was a fine, thick " +
"piece of wood, bulbous-headed, of the sort which " +
"is known as a \u201CPenang lawyer.\u201D Just " +
"under the head was a broad silver band, nearly an " +
"inch across, \u201CTo James Mortimer, M.R.C.S., " +
"from his friends of the C.C.H.,\u201D was engraved " +
"upon it, with the date \u201C1884.\u201D It was " +
"just such a stick as the old-fashioned family " +
"practitioner used to carry\u2014dignified, solid, " +
"and reassuring."
};
Padding = new Thickness(5, Device.OnPlatform(20, 5, 5), 5, 5);
}
}
注意使用嵌入的Unicode代码打开和关闭“智能引号”( u201C和 u201D)和em破折号( u2014)。 Padding已经在页面周围设置了5个单位,以避免文本碰到屏幕的边缘,但VerticalOptions属性也被用来垂直居中页面上的整个段落:
对于这段文字,在iOS或iOS上将HorizontalOptions设置为“开始”,“居中”或“结束”
Windows Phone会将整个段落水平移动到左侧,中间或右侧。 (对于多行文本,Android的工作方式稍有不同)移动只是轻微的,因为段落的宽度是最长文本行的宽度。 由于单词换行是由页面宽度(减去填充)控制的,因此该段落的宽度可能会略少于页面上可用的宽度。
但是设置Label的HorizontalTextAlignment属性会产生更深远的影响:设置此属性会影响各行的对齐。 TextAlignment.Center的设置将以段落的所有行为中心,TextAlignment.Right将它们全部对齐在右侧。 除了HorizontalTextAlignment之外,还可以使用HorizontalOptions将整个段落稍稍移动到中间或右侧。
但是,在将VerticalOptions设置为“开始”,“居中”或“结束”之后,VerticalTextAlignment的任何设置都不起作用。
Label定义了一个LineBreakMode属性,如果您不希望文本换行或选择截断选项,则可以将其设置为LineBreakModeenumeration的成员。
没有属性可以为段落指定第一行缩进,但可以使用各种类型的空格字符(如em空格(Unicode u2003))添加自己的一个。
您可以通过使用一个或多个换行符( n)结尾每个段落,以单个标签视图显示多个段落。但是,更好的方法是使用从Environment.NewLine静态属性返回的字符串。此属性在iOS和Android设备上返回“ n”,在所有Windows和Windows Phone设备上返回“ r n”。但不是嵌入换行符来创建段落,而是为每个段落使用一个单独的Label视图更有意义,如第4章“滚动堆栈”所示。
Label类有很多格式化的灵活性。正如你很快会看到的,由Labelallow定义的属性指定字体大小或粗体或斜体文本,还可以在单个段落中指定不同的文本格式。
标签也允许指定颜色,并且一些颜色的实验将展示HorizontalOptions和VerticalOptions属性与HorizontalTextAlignment和VerticalTextAlignment属性之间的深刻差异。