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 列舉中有很多選項。