我试图在Xamarin.Forms documentation中找到一些模拟边距。有人知道我们有什么东西或填充物吗?
更新 为了更好地理解什么是保证金(来自MSDN for WPF):
答案 0 :(得分:21)
最后! Xamarin Forms 2.2.0包括Margins支持!
Here are the docs视觉效果很好。
UPD @AUSTX_RJL特别优惠
与任何其他XAML框架一样,保证金值为Thickness
,。
您可以通过设置用逗号或空格分隔的一个,两个或四个值来在XAML中设置Thickness
:
"1 2 3 4"
与"1, 2, 3, 4"
相同,并设置:
Left
Top
Right
Bottom
Thickness
"1 2"
设置:
Left
和Right
字段Top
和Bottom
字段 "1"
为Thickness
答案 1 :(得分:15)
截至2014-06-05,Xamarin.Forms
没有保证金。在ContentView
,Frame
或任何其他布局中包含您的内容,并使用Padding
属性。
答案 2 :(得分:11)
StackLayout components = new StackLayout
{
Orientation = StackOrientation.Vertical,
Spacing=10,
Padding = new Thickness (10, 10, 10, 20),
Children = {
new Label {Text = "Hello"},
new Label {Text = "World"}
}
};
使用“间距”属性,您可以在布局中的所有子视图之间添加空格。
使用Padding属性,您可以在布局的(左侧,顶部,右侧和底部)位置添加空间。
如果希望每个标签子视图具有不同的边距,则可以执行以下操作。 1)创建和使用自定义标签:
using System;
using Xamarin.Forms;
namespace SharedViews
{
/// <summary>
/// Label propertis that will be rendered in native iOS and native Android Renderers.
/// </summary>
public class MyLabel : Label
{
/// <summary>
/// The x position of the label.
/// </summary>
public static readonly BindableProperty xProperty = BindableProperty.Create<MyLabel,int>(p => p.X,0);
public int X{
get{ return (int)base.GetValue(xProperty);}
set {base.SetValue(xProperty,value);}
}
/// <summary>
/// The y position of the label.
/// </summary>
public static readonly BindableProperty yProperty = BindableProperty.Create<MyLabel,int>(p => p.Y,0);
public int Y{
get{ return (int)base.GetValue(yProperty);}
set {base.SetValue(yProperty,value);}
}
}
}
2)创建iOS和Android渲染器
Android渲染器:
using System;
using Android.Widget;
using Android.Graphics;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;
[assembly: ExportRenderer (typeof (MyLabel), typeof (MyLabelRenderer))]
namespace ChessGame.Android{
/// <summary>
/// Android label renderer:
/// here we set native Android label properties that can't be accessed in xamarin label.
/// </summary>
public class MyLabelRenderer : LabelRenderer
{
protected override void OnElementChanged (ElementChangedEventArgs<Label> e) {
base.OnElementChanged (e);
MyLabel element = (MyLabel)this.Element;
var nativeLabelView = (TextView)Control;
nativeLabelView.SetX (element.X);
nativeLabelView.SetY (element.Y);
}
}
}
答案 3 :(得分:5)
布局支持Padding属性,该属性适用于布局中包含的子级。我认为这是他们目前支持的最接近保证金概念的
var stackLayout = new StackLayout {
Padding = new Thickness (10, 10, 10, 20),
Children = {
new Label {Text = "Hello"},
new Label {Text = "World"}
}
}
答案 4 :(得分:2)
这是Xamarin.Forms.View的扩展,用于向任何项目添加填充:
NSMutableArray
通过引用此静态类,您现在可以在构造函数中为页面创建内容,为方便起见使用WithPadding:
public static class XamarinFormsUtil
{
public static View WithPadding(this View view, double all)
{
return WithPadding (view, all, all, all, all);
}
public static View WithPadding(this View view, double left, double top, double right, double bottom)
{
return new Frame () {
Content = view,
Padding = new Thickness(left, top, right, bottom)
};
}
}
答案 5 :(得分:1)
边距 - 控制控件之间的间距 填充 - 控制父控件与其子控件之间的间距。
正如@ ad1dima所述,Xamarin表格2.2(于4月27日发布)引入了保证金。您可以在https://developer.xamarin.com/guides/xamarin-forms/user-interface/layouts/margin-and-padding/
找到有关保证金属性的文档