【问题标题】:Xamarin Forms - StackLayout inside AbsoluteLayoutXamarin Forms - AbsoluteLayout 内的 StackLayout
【发布时间】: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


    【解决方案1】:

    你可以试试:

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

    【讨论】:

    • 感谢您的回复。抱歉,但我忘了提两件事:在这种情况下使用 AbsoluteLayoutFlags.All 对我没有帮助,因为它有点具体。到目前为止,我们所做的所有代码都使用设置为 None 的 Flags,当我将其设置为 All 时,元素开始表现不正确:它们得到错误的随机位置以及有时不显示(图像/标签)将简单地消失。最后一个是我已经在使用SetLayoutBounds来定位children了,只是不一致。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 1970-01-01
    • 2015-06-11
    • 2020-03-21
    相关资源
    最近更新 更多