Was ist der Unterschied zwischen den Layoutoptionen von Xamarin.Form, insbesondere Fill und Expand?
In Xamarin.Bildet sich jedes View
hat die beiden Eigenschaften HorizontalOptions
und VerticalOptions
. Beide sind vom Typ LayoutOptions
und kann einen der folgenden Werte:
LayoutOptions.Start
LayoutOptions.Center
LayoutOptions.End
LayoutOptions.Fill
LayoutOptions.StartAndExpand
LayoutOptions.CenterAndExpand
LayoutOptions.EndAndExpand
LayoutOptions.FillAndExpand
Anscheinend steuert es die Ansicht, die Ausrichtung auf die übergeordnete Ansicht. Aber wie genau wird das Verhalten jeder einzelnen option? Und was ist der Unterschied zwischen Fill
- und das suffix Expand
?
InformationsquelleAutor der Frage Falko | 2014-08-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kurze Antwort
Start
Center
End
undFill
definieren Sie die Ansicht Ausrichtung innerhalb seiner Raum.Expand
definiert ob es belegt mehr Speicherplatzwenn verfügbar.Theorie
Die Struktur
LayoutOptions
steuert zwei unterschiedliche Verhaltensweisen:Ausrichtung: Wie ist der Blick ausgerichtet, innerhalb der übergeordneten Ansicht?
Start
: Für die vertikale Ausrichtung der Ansicht nach oben verzogen. Für die horizontale Ausrichtung dieser ist in der Regel der linken Seite. (Aber beachten Sie, dass auf Geräten mit rechts-nach-Links-Sprache einstellen-das ist die andere Weise herum, also rechts ausgerichtet wird.)Center
: Die Ansicht ist zentriert.End
: In der Regel die Ansicht ist von unten oder rechts ausgerichtet wird. (Rechts-nach-Links-Sprachen, natürlich, Links ausgerichtet ist.)Fill
: Diese Ausrichtung ist etwas anders. Die Aussicht erstrecken sich über die volle Größe des übergeordneten Ansicht.Wenn der Elternteil, jedoch nicht größer, dann Ihre Kinder, werden Sie nicht bemerken einen Unterschied zwischen diesen Ausrichtungen. Die Ausrichtung ist nur von Bedeutung für die übergeordneten Ansichten mit zusätzlicher Speicherplatz zur Verfügung.
Ausbau: Wird das element mehr Platz einnehmen, wenn verfügbar?
Expand
: Wenn die übergeordnete Ansicht größer ist als die kombinierte Größe aller seiner Kinder, d.h. der zusätzliche Platz zur Verfügung steht, dann ist der Raum bemessen unter untergeordneten Ansichten mit diesem suffix. Diese Kinder werden "besetzen" Ihren Platz, aber nicht unbedingt "füllen". Wir werden haben Sie einen Blick auf das Verhalten in dem Beispiel unten.Expand
suffix nicht bekommen zusätzlichen Platz, auch wenn mehr Speicherplatz verfügbar ist.Wieder, wenn die übergeordnete Ansicht ist nicht größer als sein Kinder, den ausbau suffix nicht einen Unterschied machen als gut.
Beispiel
Lassen Sie uns einen Blick auf das folgende Beispiel, um den Unterschied zu sehen zwischen allen acht layout-Optionen.
Die app beinhaltet einen dunklen Grau
StackLayout
mit acht geschachtelte weiße Tasten, von denen jede ist beschriftet mit seinem vertikalen layout-option. Beim Klick auf einen der buttons, es ordnet seine vertikale layout-option, um die stack-layout. Auf diese Weise können wir leicht testen, das zusammenspiel von Ansichten mit Eltern, sowohl mit verschiedenen layout-option.(Die letzten paar Zeilen code fügen Sie zusätzliche gelbe Kästen. Wir kommen zurück zu diesem einen moment.)
Die folgenden screenshots zeigen das Ergebnis, wenn auf jeder der acht Tasten. Wir machen die folgenden Beobachtungen:
stackLayout
dicht ist (nichtFill
auf der Seite), das vertikale layout-option für jedesButton
vernachlässigbar ist.stackLayout
größer ist (z.B. überFill
Ausrichtung) und die einzelnen Tasten haben dieExpand
suffix.Expand
suffix. Um dies zu sehen, mehr klar, wir Hinzugefügt gelben horizontalen Linien zwischen je zwei benachbarten Tasten.VerticalOptions
.Hier finden Sie die entsprechenden hochauflösenden screenshots.
InformationsquelleAutor der Antwort Falko
Es ist ein bisschen ein bug in der aktuellen version von Xamarin.Formen; vielleicht wurde es eine Weile.
CenterAndExpand
in der Regel nicht zu erweitern, und arbeiten, um es verwirrend sein kann.Zum Beispiel, wenn Sie eine
StackLayout
eingestelltCenterAndExpand
dann setzen Sie ein label auf der Innenseite, die auch aufCenterAndExpand
Sie erwarten würden, eine Bezeichnung, die volle Breite desStackLayout
. NÖ. Es wird nicht zu erweitern. Sie haben, um dieStackLayout
"FillAndExpand
", um die geschachtelten Label-Objekt zu erweitern, um die volle Breite desStackLayout
dann sagen Sie dem Label zu zentrieren Sie den text, nicht selbst als ein Objekt, mitHorizontalTextAlignment="Center"
. In meiner Erfahrung müssen Sie sowohl die übergeordnete als auch geschachtelte Kind festgelegt werden, umFillAndExpand
wenn Sie wirklich wollen, um sicherzustellen, es wird erweitert, um fit.InformationsquelleAutor der Antwort Clint StLaurent