我对Xamarin表单很陌生,我只能尝试让StackLayout在AbsoluteLayout中工作。在我的StackLayout中有两个孩子:一个图像(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)。另外,奇怪的是,我调试并发现,堆栈,图像和绝对都有不同的高度和宽度。上面的代码给了我450,450表示'stl‘(这很好);616,360表示'ab';150,450表示'img’。
我在这里有什么遗漏吗?这让我有点困惑,因为我让它开始工作了,但它有点“but”,没有像我预期的那样表现。因为我对Xamarin表格没有经验,所以我认为我错过了一些重要的东西,这就是为什么我希望你们能给我一些线索。
有什么想法吗?
任何帮助都是非常感谢的。谢谢!
发布于 2017-07-05 22:54:25
你可以试试:
AbsoluteLayout.SetLayoutFlags(stl, AbsoluteLayoutFlags.All);
AbsoluteLayout.SetLayoutBounds(stl, new Rectangle(0f, 0f, 1f, 1f));https://stackoverflow.com/questions/44935887
复制相似问题