我是Xamarin Forms的新手,我試圖讓StackLayout在AbsoluteLayout中工作。在我的StackLayout中有兩個孩子:一個圖像(300x300隨機圖像)和一個標籤。我將展示一個說明我的問題的例子。Xamarin Forms - StackLayout在AbsoluteLayout裏面
下面的代碼工作得很好,我(我使用的是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'。
那麼,有什麼我在這裏失蹤?這對我來說有點令人困惑,因爲我得到它的工作,但它有點「錯誤」,並不像我預期的那樣。 因爲我沒有Xamarin Forms的經驗,所以我相信我在這裏錯過了一些重要的東西,這就是爲什麼我希望你們可以給我一些線索。
任何想法?
任何幫助表示讚賞。謝謝!
感謝您的答覆。對不起,但我忘了提兩件事:使用AbsoluteLayoutFlags.All不會幫助我在這種情況下,因爲它有點特定。到目前爲止,我們所做的所有代碼都使用Flags設置爲None,並且當我將其設置爲All時,元素開始表現不正確:它們出錯的隨機位置以及有時不顯示(圖像/標籤)將簡單消失。 最後一個是我已經在使用SetLayoutBounds來定位孩子,只是它不一致。 – Ferdam