标签

PDF用于离线使用
示例代码:
相关API:

让我们知道你对此的感受

在Xamarin.Forms中显示文字

Label视图用于显示单行和多行的文本。标签可以有自定义字体(系列,大小和选项)和彩色文本。本文包含以下主题:

  • 截断和包裹 - 截断和包装选项,用于处理文本不能适合一行的情况。
  • 字体 - 字体选项。
  • 彩色 - 标签文字颜色选项。
  • 格式化文本 - 用于以多种格式/样式内联显示文本的选项。

样式标签

以下部分介绍Label了每个实例的手动设置属性。请注意,属性集可以分组为一种始终应用于一个或多个视图的样式。这可以增加代码的可读性,并使设计更改更容易实现。有关详细信息,请参阅样式

截断和包裹

可以设置标签来处理由LineBreakMode属性公开的几种方式之一不能适合一行的文本。LineBreakMode列举了以下选项:

  • HeadTruncation - 截断文本的头部,显示结束。
  • CharacterWrap - 将文本转换为字符边界的新行。
  • MiddleTruncation - 显示文本的开头和结尾,中间用省略号替代。
  • NoWrap - 不包装文本,只显示一个文本可以适合一行。
  • 尾部截断 - 显示文本的开头,截断结尾。
  • WordWrap - 在文字边界包装文本。

字形

有关详细信息,请参阅使用字体

颜色

Labels可以设置为通过bindable TextColor属性使用自定义文本颜色。

需要特别注意确保每个平台上的颜色可用。因为每个平台的文本和背景色都有不同的默认值,所以您需要小心选择每个平台上的默认值。

使用以下代码设置标签的文字颜色:

代码:

public partial class LabelPage : ContentPage
{
    public LabelPage ()
    {
        InitializeComponent ();
        var layout = new StackLayout { Padding = new Thickness(5,10) };
        this.Content = layout;
        var label = new Label { Text="This is a label.", TextColor = Color.FromHex("#77d065"), FontSize = 20 };
        layout.Children.Add(label);
    }
}

在XAML中:

<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="TextSample.LabelPage"
Title="Label Demo">
    <ContentPage.Content>
        <StackLayout Padding="5,10">
      <Label TextColor="#77d065" FontSize = "20" Text="This is a label." />
    </StackLayout>
  </ContentPage.Content>
</ContentPage>

格式文本

标签公开一个FormattedText属性,允许您在同一视图中呈现多种字体和颜色的文本。

FormattedText属性的类型的FormattedString。格式化的字符串由一个或多个Spans组成,每个s具有以下属性:

  • BackgroundColor - 可用于设置背景颜色,例如实现荧光笔效果。
  • FontAttributes - 可以设置为粗体,斜体或两者。
  • FontFamily - 设置要使用的字体。
  • FontSize - 设置文本的大小。
  • ForegroundColor - 设置文本的颜色。
  • 文本 - 要显示的文本。

以下C#代码演示了一个标签,其中第一个字是粗体,最后一个字是红色:

public partial class LabelPage : ContentPage
{
    public LabelPage ()
    {
        InitializeComponent ();
        var layout = new StackLayout { Padding = new Thickness(5,10) };
        this.Content = layout;
    var label = new Label { FontSize = 20 };
    var s = new FormattedString ();
    s.Spans.Add (new Span{ Text = "Red Bold", FontAttributes = FontAttributes.Bold });
    s.Spans.Add (new Span{ Text = "Default" });
    s.Spans.Add (new Span{ Text = "italic small", FontSize =  Device.GetNamedSize(NamedSize.Small, typeof(Label)), FontAttributes = FontAttributes.Italic});
    label.FormattedText = s;
        layout.Children.Add(label);
    }
}

在XAML中:

<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="TextSample.LabelPage"
Title="Label Demo">
    <ContentPage.Content>
        <StackLayout Padding="5,10">
      <Label FontSize=20>
        <Label.FormattedText>
          <FormattedString>
            <Span Text="Red Bold" ForegroundColor="Red" FontAttributes="Bold" />
            <Span Text="Default" />
            <Span Text="italic small" FontAttributes="Italic" FontSize="Small" />
          </FormattedString>
        </Label.FormattedText>
      </Label>
    </StackLayout>
  </ContentPage.Content>
</ContentPage>

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐