12

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

一种方法是添加一个没有孩子的框架,如下所示:

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

不幸的是,HeightRequest并被MinimumHeightRequest忽略。

是否存在更好的方法?

4

5 回答 5

10

您可以将控件放在布局中(如框架、滚动视图、堆栈面板)并使用 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()
        };
于 2014-06-08T03:34:04.333 回答
8

大多数Xamarin.Forms布局支持在元素之间添加空间:

  • StackLayoutSpacing有财产,
  • Grid拥有RowSpacingColumnSpacing属性,
  • ...

现在,如果您想在特定位置添加间距,方法是包含一个BoxView

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

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

于 2014-06-08T05:47:49.023 回答
4

我所做的对我来说非常有效:

假设要在水平 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,您不会在视图之间获得额外的空间。

于 2015-02-04T21:02:49.710 回答
1

尝试:

myFrame.TranslateX=10;
myFrame.TranslateY=10;
于 2014-12-03T12:16:48.717 回答
0

我想与 Lay González 的回答一起分享屏幕截图,但编辑队列已满->

要在 Xamarin 中获得类似于 CSS“Space-Between”的动态间距,您可以在实际具有内容的视图之间插入填充视图。

这是一个例子:

在此处输入图像描述

在最后一个“实际”视图之后省略填充视图,以便您想要的视图位于末尾(示例中底部的“-50”标签)。

于 2022-03-01T18:28:55.273 回答