有人可以解释Xamarin.Forms中的GridLayout引用吗?
使用FormsGallery上的示例,此处也可以看到http://iosapi.xamarin.com/?link=T%3aXamarin.Forms.Grid(也有图片) 我试图解决这个问题,但我的试验和错误并不是很成功,只是非常耗时。
查看网格的第一行,代码如下
grid.Children.Add(new Label
{
Text = "Grid",
Font = Font.BoldSystemFontOfSize(50),
HorizontalOptions = LayoutOptions.Center
}, 0, 3, 0, 1);
它看起来好像第一个0指的是X位置,3指的是列跨度,下一个0指的是y位置,一个指的是行跨度。但是使用它作为参考并尝试添加其他行和列它不起作用。如果他们的样本包含一些评论会很棒,但是因为他们不能告诉我GridLayout引用是如何工作的?
干杯
答案 0 :(得分:5)
我实际上发现Miha Markic的答案有点误导,不是因为他给出的答案是错误的,而是因为Xamarin对这些论点所做的事情并不清楚。
Add(View view, int left, int right, int top, int bottom)
left = column,
right = used to work out column span ie. right - left
top = row,
bottom = used to work out row span ie. bottom - top
这意味着如果您希望第二列中的项目跨越两个,则必须执行此操作:
Add(view, 1, 3, 0, 1)
有点奇怪,因为你需要放3才能跨越两列。
(我最初在the xamarin forum上找到答案)
答案 1 :(得分:4)
就像Add(View view,int left,int right,int top,int bottom)
答案 2 :(得分:3)
如果您在XAML中创建网格,我认为您会发现网格更容易理解。在这种情况下,您有行和列,并且设置非常简单。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="3*" />
<RowDefinition Height="4*" />
</Grid.RowDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
</Grid>
这定义了一个有两行的网格。第一行是第二行的3/4。它也有两个相等的列。
您现在可以添加到网格中的单元格,例如
<Label Text="Hi!" Grid.Row = 1 Grid.Column = 0 />
这会将标签放在第二行第一列。
这与Silverlight和WPF中的完全一样。