2016-06-14 1 views
0

Я использую цикл for, чтобы добавить 198 элементов, половину цифр и половину изображений для приложения, чтобы ознакомиться с формами xamarin, но я не могу переключиться с вертикального на горизонтальное. желаемый результат состоит в том, чтобы иметь 4 изображения с их серийным номером в одной строке.Упорядочение изображений в Stacklayout, добавленных через цикл

EDIT: я не смог получить его, чтобы отобразить в нескольких строках

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

Звучит здорово. Сообщите нам, если у вас возникнут проблемы. – hvaughan3

+0

Он не отображает то, что я хочу, вот эта проблема, пожалуйста, проверьте изображение. – Jasvijay

+0

Хмм, так что вы хотите цифры слева от каждого изображения. Не уверен, что вы хотите, чтобы он выглядел. Что значит, что вы не можете переключаться с вертикальной на горизонтальную. Изменить: хотите ли вы, чтобы каждое изображение было на его собственной линии? – hvaughan3

ответ

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}; 

Это создает внешнюю вертикальную компоновку, чтобы держать все горизонтальные макеты, а затем создает горизонтальное расположение для каждой группы, что йо u хотите отображать по горизонтали.

Смежные вопросы