Xamarin 相對佈局

在這種情況下使用 ForceLayout

標籤和按鈕的大小根據其中的文字而變化。因此,當將子項新增到佈局時,它們的大小在寬度和高度上都保持為 0。例如:

relativeLayout.Children.Add(label,
    Constraint.RelativeToParent(parent => label.Width));

上面的表示式將返回 0,因為此刻寬度為 0。為了解決這個問題,我們需要監聽 SizeChanged 事件,當大小改變時,我們應該強制佈局以重繪它。

label.SizeChanged += (s, e) => relativeLayout.ForceLayout();

對於像 BoxView 這樣的檢視,這是不必要的。因為我們可以在例項化時定義它們的大小。另外一點是,在我們將它們新增到佈局時,我們可以將它們的寬度和高度定義為約束。例如:

relativeLayout.Children.Add(label,
    Constraint.Constant(0),
    Constraint.Constant(0),
    //Width constraint
    Constraint.Constant(30),
    //Height constraint
    Constraint.Constant(40));

這會將標籤新增到 0,0 點。標籤的寬度和高度將為 30 和 40.但是,如果文字太長,其中一些可能不會顯示。如果你的標籤具有或可能具有較高的高度,則可以使用 label 的 LineBreakMode 屬性。哪個可以包裝文字。 LineBreakMode 列舉中有很多選項。