我是Xamarin Forms的新手,我试图让StackLayout在AbsoluteLayout中工作。 StackLayout中有2个子项:一个图像(300x300随机图像)和一个标签。我将展示一个说明我问题的例子。
以下代码对我来说很合适(我使用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)。
另外,好奇我调试并发现Stack,Image和Absolute都有不同的高度和宽度。上面的代码给了我450,450的' stl ' (很好); 616,360 for' ab &#39 ;; 150,450 for' img '。
那么,我在这里找不到任何东西?这对我来说有点让人困惑,因为我让它上班,但它有点儿"马车",不像我预期的那样行事。 由于我没有Xamarin表格的经验,我相信我在这里缺少一些重要的东西,这就是为什么我希望你们能给我一些线索。
有什么想法吗?
感谢任何帮助。谢谢!
答案 0 :(得分:1)
您可以尝试:
AbsoluteLayout.SetLayoutFlags(stl, AbsoluteLayoutFlags.All);
AbsoluteLayout.SetLayoutBounds(stl, new Rectangle(0f, 0f, 1f, 1f));