Xamarin(XAML)如何并排放置2个标签

时间:2017-05-25 22:29:20

标签: c# xamarin.forms

我有2个标签,需要使用不同的字体来制作单个标签 "我的公司(c)" (copywrite符号)。 "我的公司"将是一个大字体和'(c)'一个小字体。我不能让它们显示为1个单一标签。似乎存在间距问题。我尝试了以下内容。

   <StackLayout Grid.Row="1" Orientation="Horizontal">
                  <Label
                      x:Name="lbCo" 
                      Text="My Company"
                      Style="{DynamicResource LargeLabel}"/>

                  <Label
                      x:Name="lbcopywrite" 
                      Text="©"
                      Margin="0,-7,0,0"
                      Style="{DynamicResource SmallLabel}"/>
                 </StackLayout>

但它似乎&#34; 我的公司(空格)(c)&#34;

任何想法如何使它看起来像&#34;我的公司(c)&#34;,总是在同一条线上并在一起?

3 个答案:

答案 0 :(得分:6)

您可以在Spacing上指定StackLayout属性:

<StackLayout Grid.Row="1" Orientation="Horizontal" Spacing="0">
     <Label x:Name="lbCo" 
            Text="My Company"
            Style="{DynamicResource LargeLabel}"/>

     <Label x:Name="lbcopywrite" 
            Text="©"
            Margin="0,-7,0,0"
            Style="{DynamicResource SmallLabel}"/>
</StackLayout>

默认情况下,该值为6.

答案 1 :(得分:6)

还有另一种方法,但您无法直接为文本指定样式,但您可以选择多种字体选项。您仍然可以将样式设置为主标签。

<Label>
    <Label.FormattedText>
        <FormattedString>
            <Span Text="Company" FontAttributes="Bold"/>
            <Span Text=" ©" FontSize="Micro" />
        </FormattedString>
    </Label.FormattedText>
</Label>

如果要绑定,则需要创建一个返回FormattedString的Converter,并分配给FormattedText。如果要重用它,可以使用不同的样式创建带参数的转换器。

<Label FormattedText="{Binding Text, Converter={StaticResource FormattedStringConverter}}" />

答案 2 :(得分:3)

您应该使用VerticalTextAlignment属性并将其设置为居中。您还应该为两者设置标签边距为0.

<StackLayout Grid.Row="1" Orientation="Horizontal">
    <Label
        x:Name="lbCo" 
        Text="My Company"
        VerticalTextAlignment="Center"
        Style="{DynamicResource LargeLabel}"/>
    <Label
        x:Name="lbcopywrite" 
        Text="©"
        VerticalTextAlignment="Center"
        Style="{DynamicResource SmallLabel}"/>
</StackLayout>