2017-08-16 273 views
0

我很难在网格上设置文本和图片。以下是我需要做的:Xamarin表格网格布局

  • 两列
  • 第一列包含文本的两排,左对齐。
  • 第二列包含单个图像,占据整个高度,但是右对齐。

所以它将基本上是这样的:

enter image description here

我已经试过两种方法。

  • 第一种方法是创建一个2×2的网格,并且所述图像的ColumnSpan设置为2。但该图标没有被垂直居中,它仍然是在顶行英寸

  • 第二种方法是创建1x2网格(1行2列),然后添加一个包含两个文本字符串的StackLayout到第一个子节点,并将图像添加到第二个子节点。这次图像垂直居中,但不幸的是左对齐。

任何人都可以帮忙吗?

谢谢。

代码第二种方法:

 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 

这现在看起来是这样的:

enter image description here

的形象应该是在网格的最右侧。

谢谢。

+0

个人,我会使用2x2网格并将图像的RowSpan(不列)设置为2.您应该能够调整图像对齐设置以获得所需。 – Jason

+0

在#2示例中,“右”StackLayout具有Horizo​​ntalOptions.Start,这意味着它将左对齐。您可能希望将其填充到容器中,然后将其中的图像右对齐。或者完全摆脱StackLayout – Jason

+0

Duh,我简直不敢相信它那么简单。谢谢你指出。您是否可以将此作为回答发布,以便我可以标记并解决问题?再次感谢。 – MrProgrammer

回答

3

在您的#2示例中,“右”StackLayout具有Horizo​​ntalOptions.Start,这意味着它将左对齐。您可能希望将其填充到容器中,然后将其中的图像右对齐。或者完全摆脱StackLayout

+0

就是这样。谢谢。 – MrProgrammer