webentwicklung-frage-antwort-db.com.de

Xamarin bildet Ränder

Ich versuche, einige analoge Ränder in Xamarin.Forms zu finden Dokumentation . Weiß jemand, gibt es etwas oder Polsterung ist alles, was wir haben?

Update: Zum besseren Verständnis der Marge (von MSDN für WPF): enter image description here

26
ad1Dima

Zu guter Letzt! Xamarin Forms 2.2. enthält Margins Unterstützung!

Hier sind die Dokumente mit einer großartigen Grafik. enter image description here

[~ # ~] upd [~ # ~] Spezial für @AUSTX_RJL Der Randwert ist Thickness, genau wie in jedem anderen XAML-Framework.

Sie können Thickness in XAML festlegen, indem Sie einen, zwei oder vier durch Komma oder Leerzeichen getrennte Werte festlegen: "1 2 3 4" ist dasselbe wie "1, 2, 3, 4" und setzt:

  • 1 für Left
  • 2 für Top
  • 3 für Right
  • 4 für Bottom

Felder von Thickness

"1 2" setzt:

  • 1 für Left und Right Felder
  • 2 für Top und Bottom Felder

"1" setzt 1 für alle Felder von Thickness

24
ad1Dima

Ab dem 05.06.2014 gibt es keine Ränder in Xamarin.Forms. Wickeln Sie Ihren Inhalt in ContentView, Frame oder ein anderes Layout und verwenden Sie die Eigenschaft Padding.

15
 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"}
            }
        };  

Mit der Spacing-Eigenschaft können Sie Leerzeichen zwischen allen untergeordneten Ansichten im Layout einfügen.

Mit der Padding-Eigenschaft können Sie Leerzeichen an den Positionen (links, oben, rechts und unten) des Layouts hinzufügen.

Wenn Sie möchten, dass jede untergeordnete Beschriftungsansicht einen anderen Rand hat, können Sie Folgendes tun. 1) Erstellen und verwenden Sie ein benutzerdefiniertes Etikett wie folgt:

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) Erstellen Sie Ihr iOS und Android Renderer

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);
    }
  }
}
12
Ahmed Hesham

Layouts unterstützen eine Padding -Eigenschaft, die für die im Layout enthaltenen untergeordneten Elemente gilt. Ich denke, dies kommt einem Margin-Konzept, das sie derzeit unterstützen, am nächsten

  var stackLayout = new StackLayout {
    Padding = new Thickness (10, 10, 10, 20),
    Children = {
      new Label {Text = "Hello"},
      new Label {Text = "World"}
    }
  }
5
Jason

Hier ist eine Erweiterung zu Xamarin.Forms.View, mit der Sie jedem Element Polster hinzufügen können:

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)
        };
    }
}

Wenn auf diese statische Klasse verwiesen wird, können Sie jetzt den Inhalt für Ihre Seite im Konstruktor mit WithPadding erstellen:

Content = new StackLayout () {
    Orientation = StackOrientation.Vertical,
    Children = {
        welcome.WithPadding(10),
        stars.WithPadding(10),
        starCount.WithPadding(10)
    }
};
2
instantiator

Ränder - steuern Sie den Abstand zwischen den Steuerelementen.
Auffüllen - Steuert den Abstand zwischen einem übergeordneten Steuerelement und seinen untergeordneten Steuerelementen.

Wie @ ad1dima feststellte, hat Xamarin Forms 2.2 (veröffentlicht am 27. April) Ränder eingeführt. Dokumentation zur Eigenschaft margin finden Sie unter https://developer.xamarin.com/guides/xamarin-forms/user-interface/layouts/margin-and-padding/

1
lyndon hughey