在Xamarin.Forms布局中添加空间?

时间:2014-06-08 01:11:29

标签: xamarin xamarin.forms

Xamarin.Forms中将空间添加到布局的建议方法是什么?

一种方法是添加一个 Frame with no children ,如下所示:

new Frame {
    BackgroundColor = Color.White,
    HeightRequest = 1,
    MinimumHeightRequest = 1,
    HasShadow = false
}

不幸的是,HeightRequestMinimumHeightRequest会被忽略。

有更好的方法吗?

4 个答案:

答案 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属性,
  • GridRowSpacingColumnSpacing属性,
  • ...

现在,如果您想在特定位置添加间距,那么指向它的方法是包含BoxView

myStackLayout.Children.Add (new BoxView {Color = Color.Transparent, HeightRequest = 5});

您还可以将内容包装在FrameContentView中,但它会在内容中添加填充而不是添加空格(尽管效果会相同)。

答案 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;