【发布时间】:2017-12-09 16:37:12
【问题描述】:
我是 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 for 'stl' (这很好); 616, 360 为 'ab'; 150, 450 代表“img”。
那么,我在这里有什么遗漏吗?这对我来说有点令人困惑,因为我让它工作但它有点“错误”,不像我预期的那样表现。 由于我在 Xamarin Forms 方面没有经验,我相信我在这里遗漏了一些重要的东西,这就是为什么我希望你们能给我一些线索。
有什么想法吗?
感谢任何帮助。谢谢!
【问题讨论】:
标签: c# xamarin xamarin.forms absolutelayout