通过循环添加在Stacklayout中排列图像

时间:2016-06-14 11:34:56

标签: c# xamarin xamarin.forms

我正在使用for循环为应用添加198项,一半数字和一半图像只是为了熟悉xamarin表单但无法从垂直切换到水平。所需的输出是4个图像,其序列号在一行中。

编辑:我无法让它以多行显示

Image[] show = new Image[100];
for(int i=0;i<100;i++)
{
    show[i]=new Image{ Aspect = Aspect.AspectFit };
    show[i].WidthRequest = 30;
    show[i].HeightRequest = 30;
    show[i].Source = images[i];
}

for (int i=0;i<99;i++)
{
    if (i % 4 == 0)
    {
        layout.HorizontalOptions = LayoutOptions.Start;
        layout.Spacing = 15;
        layout.Orientation = StackOrientation.Vertical;
        layout.Children.Add(new Label { Text = (i+1).ToString() });
        layout.Spacing = 10;
        layout.Children.Add(show[i]); 
    }
    else
    {
        layout.HorizontalOptions = LayoutOptions.StartAndExpand;
        layout.Spacing = 10;
        layout.Orientation = StackOrientation.Horizontal;
        layout.Children.Add(new Label { Text = (i+1).ToString() });
        layout.Children.Add(show[i]);
    }
}

这是当前输出Output

1 个答案:

答案 0 :(得分:0)

我建议使用网格,但要使用布局,你需要更像这样的东西:

        var outerLayout = new StackLayout {Orientation = StackOrientation.Vertical};
        var innerLayout = new StackLayout();
        for (int i = 0; i < 99; i++)
        {
            if (i%4 == 0)
            {
                if (i != 0)
                    outerLayout.Children.Add(innerLayout);
                innerLayout = new StackLayout {Orientation = StackOrientation.Horizontal};
            }
            innerLayout.Children.Add(new Label { Text = (i + 1).ToString() });
            innerLayout..Children.Add(show[i]); 
        }
        outerLayout.Children.Add(innerLayout);
        MainPage = new ContentPage {Content = outerLayout};

这会创建一个外部垂直布局来保存所有水平布局,然后为要水平显示的每个组创建一个水平布局。