在Xamarin.Forms中向布局添加空间的建议方法是什么?
一种方法是添加一个没有孩子的框架,如下所示:
new Frame {
BackgroundColor = Color.White,
HeightRequest = 1,
MinimumHeightRequest = 1,
HasShadow = false
}
不幸的是,HeightRequest
并被MinimumHeightRequest
忽略。
是否存在更好的方法?
在Xamarin.Forms中向布局添加空间的建议方法是什么?
一种方法是添加一个没有孩子的框架,如下所示:
new Frame {
BackgroundColor = Color.White,
HeightRequest = 1,
MinimumHeightRequest = 1,
HasShadow = false
}
不幸的是,HeightRequest
并被MinimumHeightRequest
忽略。
是否存在更好的方法?
您可以将控件放在布局中(如框架、滚动视图、堆栈面板)并使用 Padding 属性:
this.stackPanel = new StackLayout ()
{
Padding = new Thickness (8, 8)
};
var scrollView = new ScrollView ()
{
Content = stackPanel,
Padding = new Thickness (1, 2, 3, 4)
};
var frame = new Frame ()
{
Padding = new Thickness (8)
};
例如,如果您想要两个按钮之间的空间,我相信这可以解决问题。第一个向底部填充添加 10,第二个向顶部填充添加 10,总共 20。
var frame1 = new Frame ()
{
Padding = new Thickness (0,0,0,10),
Content = new Button()
};
var frame2 = new Frame ()
{
Padding = new Thickness (0,10,0,0),
Content = new Button()
};
大多数Xamarin.Forms
布局支持在元素之间添加空间:
StackLayout
Spacing
有财产,Grid
拥有RowSpacing
和ColumnSpacing
属性,现在,如果您想在特定位置添加间距,方法是包含一个BoxView
:
myStackLayout.Children.Add (new BoxView {Color = Color.Transparent, HeightRequest = 5});
您也可以将内容包装在Frame
orContentView
中,但它会为内容添加填充而不是添加空格(尽管效果相同)。
我所做的对我来说非常有效:
假设要在水平 StackLayout 上均匀分布 2 个标签:
new StackLayout
{
Orientation = StackOrientation.Horizontal,
HorizontalOptions=LayoutOptions.CenterAndExpand,
Spacing = 0, // <- Very important!!
Children = {
new Label { Text = "Label 1" },
new BoxView { HorizontalOptions = LayoutOptions.FillAndExpand }, // <- the clever part
new Label { Text = "Label 2" }
}
};
概括
通过插入填充视图之间剩余空间(“FillAndExpand”)的 BoxView,您的视图看起来是均匀分布的。通过设置Spacing = 0
,您不会在视图之间获得额外的空间。
尝试:
myFrame.TranslateX=10;
myFrame.TranslateY=10;