Xamarin.Forms:在网格标签中添加填充?

时间:2019-02-28 01:08:45

标签: xamarin xamarin.forms visual-studio-2017

一个网格单元格看起来像这样:

<Label Text="{Binding Name}" 
       Grid.Row="0" 
       Grid.Column="1" 
       VerticalTextAlignment="Center" 
       HorizontalTextAlignment="Center" 
       FontSize="16" 
       TextColor="White" 
       BackgroundColor="red" />

有2列,每列为宽度的50%。使用上面的xaml,整个单元格(半行)将被涂成红色。

它看起来像这样:

enter image description here

我可以仅在Grid.Row="0"Grid.Column="1"上添加左和/或右填充,以使该列的宽度仍为50%而不是标签宽度吗?我不想做的就是更改网格结构(即添加更多列)。

所需的结果是这样的,但是不必添加更多列或更改列大小:

enter image description here

3 个答案:

答案 0 :(得分:2)

如果只想放在列的中间,只需添加HorizontalOptions="Center"。在这种方法中,如果增加标签文本,则标签周围的空间会减小。

如果要在标签周围留出一定的空间,则应为标签设置Margin

<Label Text="{Binding Name}" 
       Grid.Row="0" 
       Grid.Column="1" 
       Margin="20,0"
       VerticalTextAlignment="Center" 
       HorizontalTextAlignment="Center" 
       FontSize="16" 
       TextColor="White" 
       BackgroundColor="red" />

答案 1 :(得分:1)

您可以将标签放在StackLayout中并设置其填充。例如:

<StackLayout Grid.Row="0" Grid.Column="1" Padding="10,0,10,0">
  <Label  
        Text="text"  
        VerticalTextAlignment="Center" 
        HorizontalTextAlignment="Center" 
        FontSize="16" 
        TextColor="White" 
        BackgroundColor="red" />
</StackLayout>

PS:与CSS中的填充不同(右上-buttom-left),xamarin中的填充顺序为left-top-right-buttom。

有关更多详细信息,请参阅Margin and Padding

答案 2 :(得分:0)

如果我理解正确,那么您需要边距而不是填充。出于同样的原因,您不会像Xamarin Forms中的许多其他视图一样在Label中找到padding属性。

这应该符合您的目的。

<Label Text="{Binding Name}" 
       Grid.Row="0" 
       Grid.Column="1"
       Margin="20, 0, 20, 0" 
       VerticalTextAlignment="Center" 
       HorizontalTextAlignment="Center" 
       FontSize="16" 
       TextColor="White" 
       BackgroundColor="red" />

要详细了解填充和边距的工作原理,可以查看此链接 https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/layouts/margin-and-padding