在Xamarin.Forms中将空间添加到布局的建议方法是什么?
一种方法是添加一个 Frame with no children ,如下所示:
new Frame {
BackgroundColor = Color.White,
HeightRequest = 1,
MinimumHeightRequest = 1,
HasShadow = false
}
不幸的是,HeightRequest
和MinimumHeightRequest
会被忽略。
有更好的方法吗?
答案 0 :(得分:9)
您可以将控件放在布局中(如框架,滚动视图,堆栈面板)并使用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()
};
答案 1 :(得分:6)
大多数Xamarin.Forms
布局支持在元素之间添加空格:
StackLayout
有一个Spacing
属性,Grid
有RowSpacing
和ColumnSpacing
属性,现在,如果您想在特定位置添加间距,那么指向它的方法是包含BoxView
:
myStackLayout.Children.Add (new BoxView {Color = Color.Transparent, HeightRequest = 5});
您还可以将内容包装在Frame
或ContentView
中,但它会在内容中添加填充而不是添加空格(尽管效果会相同)。
答案 2 :(得分:2)
我的工作对我来说很完美:
假设您想在水平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
,您的视图之间不会占用额外空间。
答案 3 :(得分:1)
尝试:
myFrame.TranslateX=10;
myFrame.TranslateY=10;