Я пытаюсь найти аналог маржи в документации Xamarin.Forms . Кто-нибудь знает, есть ли что-то или прокладки - это все, что у нас есть?
UPD Для лучшего понимания того, какая маржа (из msdn для wpf):
Я пытаюсь найти аналог маржи в документации Xamarin.Forms . Кто-нибудь знает, есть ли что-то или прокладки - это все, что у нас есть?
UPD Для лучшего понимания того, какая маржа (из msdn для wpf):
Наконец! Xamarin Forms 2.2.0 включает Margins поддержку!
Вот документы с большим визуальным эффектом.
Начиная с 2014-06-05, в 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.
Android Renderer:
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, которое применяется к детям, содержащимся в макете. Я думаю, что это ближе всего к концепции Margin, которую они в настоящее время поддерживают
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)
}
};
Поля - управление пространством между элементами управления.
Padding - контролирует расстояние между родительским элементом управления и его дочерними элементами управления.
Как указано в @ad1dima, Xamarin forms 2.2 (выпущен 27 апреля) вводил поля. Вы можете найти документацию по свойству margin на https://developer.xamarin.com/guides/xamarin-forms/user-interface/layouts/margin-and-padding/