我是Xamarin Forms的新手,我试图让StackLayout在AbsoluteLayout中工作。在我的StackLayout中有两个孩子:一个图像(300x300随机图像)和一个标签。我将展示一个说明我的问题的例子。Xamarin Forms - StackLayout在AbsoluteLayout里面
下面的代码工作得很好,我(我使用的是300x300的图像):
public class TestedPage : ContentPage
{
public TestPage()
{
BackgroundColor = Color.Brown;
StackLayout stl = new StackLayout();
AbsoluteLayout ab = new AbsoluteLayout();
Image img = new Image();
img.Source = ImageSource.FromFile("circle.png");
Label lbl = new Label
{
Text = "#Text1000",
TextColor = Color.White,
FontSize = Device.GetNamedSize(NamedSize.Small, typeof(Label)),
HorizontalOptions = LayoutOptions.Center
};
stl.Children.Add(img);
stl.Children.Add(lbl);
ab.Children.Add(stl);
Content = ab;
}
}
的问题是,上面的代码简单地将它扔“STL”没有定位,这对我来说很重要,因为我需要将它准确定位在我想要的位置。 因此,您可能会问“为什么不使用Children.Add()的更多参数?”,以及ab.Children.Add(stl, new Rectangle(0,0,450,450));
将不会正确定位'stl',至少对于我来说,在上面的代码中,它将会在屏幕开始和中心之后,右侧,而不是原点(0,0)。另外,我很好奇,我调试并发现堆栈,图像和绝对都有不同的高度和宽度。上面的代码给我450,450''stl'(这很好); 616,360代表'ab'; 150,450'img'。
那么,有什么我在这里失踪?这对我来说有点令人困惑,因为我得到它的工作,但它有点“错误”,并不像我预期的那样。 因为我没有Xamarin Forms的经验,所以我相信我在这里错过了一些重要的东西,这就是为什么我希望你们可以给我一些线索。
任何想法?
任何帮助表示赞赏。谢谢!
感谢您的答复。对不起,但我忘了提两件事:使用AbsoluteLayoutFlags.All不会帮助我在这种情况下,因为它有点特定。到目前为止,我们所做的所有代码都使用Flags设置为None,并且当我将其设置为All时,元素开始表现不正确:它们出错的随机位置以及有时不显示(图像/标签)将简单消失。 最后一个是我已经在使用SetLayoutBounds来定位孩子,只是它不一致。 – Ferdam