Xamarin.Forms GridLayout

时间:2014-09-26 15:00:23

标签: layout xamarin grid xamarin.forms

有人可以解释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引用是如何工作的?

干杯

3 个答案:

答案 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)

此处Understanding Grid Layout

答案 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中的完全一样。