我试图在 Xamarin.Forms文档中找到一些边距模拟。有人知道我们所拥有的东西或填充物是什么吗?
更新:
为了更好地理解保证金是什么(来自 MSDN for WPF):
我试图在 Xamarin.Forms文档中找到一些边距模拟。有人知道我们所拥有的东西或填充物是什么吗?
更新:
为了更好地理解保证金是什么(来自 MSDN for WPF):
终于!Xamarin Forms 2.2.0包括边距支持!
这是具有出色视觉效果
的文档。
@AUSTX_RJL 保证金值的UPD特殊值是Thickness
,就像在任何其他 XAML 框架中一样。
您可以Thickness
在 XAML 中通过设置一个、两个或四个以逗号或空格分隔的值来进行
设置:与设置"1 2 3 4"
相同:"1, 2, 3, 4"
Left
Top
Right
Bottom
领域Thickness
"1 2"
套:
Left
和Right
字段Top
和Bottom
字段"1"
为所有字段设置 1Thickness
截至 2014 年 6 月 5 日,Xamarin.Forms
. 将您的内容包装在或任何其他布局中,并使用该ContentView
属性。Frame
Padding
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"}
}
};
使用 Spacing 属性,您可以在布局中的所有子视图之间添加空间。
使用 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 渲染器
安卓渲染器:
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);
}
}
}
布局支持Padding属性,该属性适用于布局中包含的子项。我认为这是最接近他们目前支持的保证金概念
var stackLayout = new StackLayout {
Padding = new Thickness (10, 10, 10, 20),
Children = {
new Label {Text = "Hello"},
new Label {Text = "World"}
}
}
这是 Xamarin.Forms.View 的扩展,用于向任何项目添加填充:
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)
};
}
}
引用这个静态类后,您现在可以在构造函数中为您的页面创建内容,使用 WithPadding 为方便起见:
Content = new StackLayout () {
Orientation = StackOrientation.Vertical,
Children = {
welcome.WithPadding(10),
stars.WithPadding(10),
starCount.WithPadding(10)
}
};
边距 - 控制控件之间的空间。
填充 - 控制父控件与其子控件之间的间距。
正如@ad1dima 所说,Xamarin forms 2.2(4 月 27 日发布)引入了利润。您可以在https://developer.xamarin.com/guides/xamarin-forms/user-interface/layouts/margin-and-padding/找到有关边距属性的文档