Xamarin表单 - AbsoluteLayout

时间:2017-07-05 20:59:30

标签: c# xamarin xamarin.forms absolutelayout

我是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表格的经验,我相信我在这里缺少一些重要的东西,这就是为什么我希望你们能给我一些线索。

有什么想法吗?

感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

您可以尝试:

AbsoluteLayout.SetLayoutFlags(stl, AbsoluteLayoutFlags.All);

AbsoluteLayout.SetLayoutBounds(stl, new Rectangle(0f, 0f, 1f, 1f));