一个网格单元格看起来像这样:
<Label Text="{Binding Name}"
Grid.Row="0"
Grid.Column="1"
VerticalTextAlignment="Center"
HorizontalTextAlignment="Center"
FontSize="16"
TextColor="White"
BackgroundColor="red" />
有2列,每列为宽度的50%。使用上面的xaml,整个单元格(半行)将被涂成红色。
它看起来像这样:
我可以仅在Grid.Row="0"
和Grid.Column="1"
上添加左和/或右填充,以使该列的宽度仍为50%而不是标签宽度吗?我不想做的就是更改网格结构(即添加更多列)。
所需的结果是这样的,但是不必添加更多列或更改列大小:
答案 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