我正在使用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
答案 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};
这会创建一个外部垂直布局来保存所有水平布局,然后为要水平显示的每个组创建一个水平布局。