Xamarin Forms - AbsoluteLayout - Wie funktioniert Positionen
Arbeite ich mit Xamarin.Formen mit AbsoluteLayout, allerdings bin ich mir nicht sicher, zu verstehen, wie funktioniert die positionsvorrichtung der Elemente.
Arbeite ich mit Proportional-Werte, so dass, wenn ich die Platzierung für ein element an AbsoluteLayout.LayoutBounds="1, 0.05, 0.15, 0.1"
wo die einzelnen Werte Proportional ist (also die Flaggen sind "alle" AbsoluteLayout.LayoutFlags="All"
)
Es befindet sich an der oberen/rechten Seite des Bildschirms. Es wird nicht ein Ort ein bisschen außerhalb aber. Also, was bedeutet das? Jedem element sind repositionned in den Bildschirm, wenn Sie nach draußen gehen?
Aber jetzt eine andere Frage kommt, wenn Sie ein element platzieren, auf was basiert die X/Y-position? Funktioniert der center oder anderen Punkt?
In diesem Beispiel habe ich versucht mit 0.15 aber das rendering war ein bisschen komisch, also ich setze Sie 0 und dann das rendering übereinstimmen mit dem, was ich will.
Könnte man sagen "Testen Sie es aus und Sie werden sehen.", jedoch, Es ist eine Verschwendung von Zeit für die designer und mir, um die position jedes elements, weil wir nicht wissen, um zu verstehen, wie funktioniert es. Also wir juste machen, versuchen Sie es mit debugging..
Sind wir auch auf der Suche, um zu wissen, ob eine software existiert zu generieren Positionen über das design von dem designer gemacht wurden. Meinen wir die position X/Y des Elements in Prozent.
Danke im Voraus !
InformationsquelleAutor Emixam23 | 2016-06-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit AbsoluteLayoutFlag.Alle, die das Rechteck bounds-Parameter haben folgende Bedeutung:
Breite und Höhe sind, was die Leute normalerweise erwarten. Aber x und y sind nicht wie Menschen, die eher "Links" und "oben". Schreiben Sie einen Konverter zum umwandeln linken Anteil in x-und top-Prozentsatz in y:
x = Links /(1 - Breite)
y = /(1 - Höhe)
Sorry, ich bin nicht sicher, was du meinst, durch die Steuerung der Breite. Kann jemand bitte helfen mir zu verstehen?
InformationsquelleAutor François
Als ich recherchiert
AbsoluteLayout
ich habe dieses Beispiel undWas habe ich mich entschlossen aus meiner Untersuchung:
X
undY
sind die Koordinaten der linken oberen Ecke desView
. Es ist relative position. Wie Sie sehen können, für rote Rechteck1.0, 1.0
ist die center-position, so, wie ich Sie verstehe, 100% Breite des Bildschirms ist2.0
(gleiche Höhe). Alle Ansichten innerhalbAbsoluteLayout
positioniert, abhängig von den Werten der übergeordnetenAbsoluteLayout
.Bearbeitet:
X
undY
sind center koordinieren vonView
, nicht nach Links oben in die Ecke. Und 100% derWidth
ist1.0
.<BoxView Color="White" AbsoluteLayout.LayoutBounds="0.5, 0.5, 0.5, 0.5" AbsoluteLayout.LayoutFlags="All" />
wie Es scheint, ist es nicht die linke Obere Ecke, sondern die Mitte.. Das ist der Grund, warum wir so verloren.. Danke für deine Antwort 🙂ja, richtig,
AbsoluteLayout.LayoutBounds="0.5, 0.5
ist ein Viertel positionWidth
undHeight
, weil der volle Bildschirm ist2.0
- und center ist1.0
.Ok danke ! 🙂 Ich werde es versuchen, mit meinem designer 😉 Aber Letzte Frage (ich will nicht zu langweilig)
<BoxView Color="Olive" AbsoluteLayout.LayoutBounds="1,.5, 25, 100" AbsoluteLayout.LayoutFlags="PositionProportional" />
Tut es nicht, der Anpassung an das Recht? Wenn ich mich verstehen Sie Ihre Antwort?AbsoluteLayout.LayoutBounds="1,.5
-1
ist das Zentrum derWidth
und.5
ist ein Viertel derHeight
, also der linken oberen Ecke desBoxView
werden in der Mitte derWidth
vonAbsoluteLayout
und im QuartalHeight
. Es ist proportional dem Wert, der2
ist 100%1
ist 50%.5
ist 25%Ja, Sie haben Recht, die
X, Y
- Koordinate der Mitte desView
ich "spielte" mit Oliven -, Rechteck-und herausgefunden, es. Vielen Dank, du hast mir geholfen) ich bearbeitet meine Antwort.InformationsquelleAutor Yehor Hromadskyi
X
&&Y
sind der Mittelpunkt des ElementsInformationsquelleAutor Emixam23
Ich habe einige Tests und festgestellt, dass,Mit AbsoluteLayoutFlag.Allen, die im wesentlichen der X-Wert angegeben als Prozentsatz im Grunde darstellt, wo der Anker ist auf ein Rechteck. Wie, wenn X = 10%, dann ist der Anker 10% von der linken Seite des Rechtecks:
Beispiel
Bei X = 0.1 mit einer bestimmten Breite von 20%. 90% der Länge gehen Sie nach rechts und 10% gehen an die linke.
Bei X = 0.5 mit einer bestimmten Breite von 20%. 10% gehen nach Links und 10% auf der rechten Seite.
Formel für die X-Grenzen
Variablen im Rechteck (Ax, Ay, Wx, Wy):
W - erforderliche Breite
Ax - X-Wert. (Anker-position)
X1 - X-Wert für die position der linken oberen Ecke relativ zur linken Seite (X = 0)
X2 - x-position-Wert der rechten oberen Ecke relativ zur linken Seite (X = 0)
Die Formel hat 5 mögliche Szenarien für ein Anker-Wert
Ax = 0:
X1 = 0 & X2 = Wx
Ax = 1:
X2 = 1 & X1 = (1 - Wx)
Ax = 0.5
X1 = Ax - (0.5)(Wx)
X2 = Ax + (0.5)(Wx)
0 < Ax < 0.5
X1 = Ax - (Ax)(Wx)
X2 = Ax + (1 - Ax)(Wx)
0.5 < Ax < 1
X1 = Ax - (Ax)(Wx)
X2 = Ax + (1-Ax)(Wx)
InformationsquelleAutor Janwilx72
Als späte Antwort, ich habe ein nuget-Paket mit einer Gabel von AbsoluteLayout aber, wie ich erwarten würde.
Installieren Sie nuget-Paket
SmartMachines.AbsoluteLayout
hinzufügen namespacexmlns:sm="clr-namespace:SmartMachines;assembly=AbsoluteLayout"
und Sie haben genau die gleichen AbsoluteLayout als native Xamarin, aber mit den erwarteten Proportionalen Ausrichtung Verhalten.Hoffen, dass das speichern andere Leute viele Stunden am googeln und zu Debuggen.
InformationsquelleAutor smartmachines