2017-08-16 9 views
0

Ich habe es schwer, den Text und die Bilder auf dem Raster zu setzen. Hier ist, was ich tun muss:Xamarin Forms Rasterlayouts

  • zwei Spalten
  • erste Spalte enthält zwei Zeilen Text, linksbündig.
  • Die zweite Spalte enthält ein einzelnes Bild, das die gesamte Höhe einnimmt, aber rechtsbündig ausgerichtet ist.

So wäre es im Wesentlichen wie folgt aussehen:

enter image description here

Ich habe zwei Ansätze ausprobiert.

  • Der erste Ansatz war die Schaffung eines 2x2 Raster und Einstellen des Column des Bildes 2. Aber das Symbol wurde nicht vertikal, es war immer noch in der oberen Reihe zentriert.

  • Der zweite Ansatz bestand darin, ein 1x2-Raster (1 Zeile, 2 Spalten) zu erstellen und dann ein StackLayout mit den beiden Textzeichenfolgen zum ersten untergeordneten Element und das Bild zum zweiten untergeordneten Element hinzuzufügen. Dieses Mal wurde das Bild vertikal zentriert, aber leider linksbündig.

Kann mir bitte jemand helfen?

Vielen Dank.

-Code für den zweiten Ansatz:

 Content = new Grid 
     { 
      //Padding = new Thickness(75, 5, 25, 5), 
      VerticalOptions = LayoutOptions.FillAndExpand, 
      HorizontalOptions = LayoutOptions.StartAndExpand, 

      RowDefinitions = 
      { 
       new RowDefinition(), 
      }, 

      ColumnDefinitions = 
      { 
       new ColumnDefinition(), 
       new ColumnDefinition(), 
      }, 
     }; 

     (Content as Grid).RowDefinitions[0].Height = new GridLength(1, GridUnitType.Star); 
     (Content as Grid).ColumnDefinitions[0].Width = new GridLength(9, GridUnitType.Star); 
     (Content as Grid).ColumnDefinitions[1].Width = new GridLength(1, GridUnitType.Star); 

     StackLayout left = new StackLayout 
     { 
      HorizontalOptions = LayoutOptions.StartAndExpand, 
      VerticalOptions = LayoutOptions.Center, 
      Orientation = StackOrientation.Vertical, 
      Children = 
      { 
       firstName, 
       lastName, 
      } 
     }; 

     StackLayout right = new StackLayout 
     { 
      HorizontalOptions = LayoutOptions.Start, 
      VerticalOptions = LayoutOptions.Center, 
      Orientation = StackOrientation.Horizontal, 
      Children = 
      { 
       icon, 
      } 
     }; 

     (Content as Grid).Children.Add(left, 0, 0); 
     (Content as Grid).Children.Add(right, 1, 0); 
     //(Content as Grid).Children[1].HorizontalOptions = LayoutOptions.End 

Dies sieht nun so aus:

enter image description here

Das Bild sollte in der rechten Seite des Gitters sein.

Danke.

+0

persönlich, würde ich ein 2x2 Raster verwenden und die RowSpan (nicht Spalte) des Bildes auf 2 setzen. Sie sollten in der Lage sein, die Bildausrichtung Einstellungen zu erhalten, was Sie wollen. – Jason

+0

In Ihrem Beispiel # 2 hat das "rechte" StackLayout HorizontalOptions.Start, was bedeutet, dass es links ausgerichtet wird. Wahrscheinlich möchten Sie, dass der Inhalt des Containers gefüllt wird, und richten Sie dann das Bild rechtsbündig aus. Oder das StackLayout ganz loswerden – Jason

+0

Duh, ich kann nicht glauben, dass es so einfach war. Danke, dass du es aufgezeigt hast. Würdest du das bitte als Antwort posten, damit ich es markieren und die Frage abschließen kann? Danke noch einmal. – MrProgrammer

Antwort

3

In Ihrem # 2 Beispiel hat das "richtige" StackLayout HorizontalOptions.Start, was bedeutet, dass es links ausgerichtet wird. Wahrscheinlich möchten Sie, dass der Inhalt des Containers gefüllt wird, und richten Sie dann das Bild rechtsbündig aus. Oder das StackLayout insgesamt loswerden

+0

Das war es. Vielen Dank. – MrProgrammer