Ich weiß, dass wir die folgenden Werte für die Eigenschaften android:gravity
und festlegen können android:layout_gravity
:
center
center_vertical
center_horizontal
, usw.
Aber ich bin in Bezug auf beide verwirrt.
Was ist der Unterschied zwischen der Verwendung von android:gravity
und android:layout_gravity
?
android
android-layout
android-gravity
Paresh Mayani
quelle
quelle
ImageView
's scheinen sich anders zu verhalten alsTextView
' s.Antworten:
Ihre Namen sollten Ihnen helfen:
android:gravity
Legt die Schwerkraft des Inhalts (dh seiner Unteransichten) des Inhalts fest, auf demView
er verwendet wird.android:layout_gravity
Legt die Schwerkraft desView
oderLayout
relativ zu seinem Elternteil fest.Und ein Beispiel ist hier .
quelle
layout_
definiert alles mit etwas, das die Elemente außerhalb beeinflusst.android:gravity
auf links und die Kinderandroid:layout_gravity
auf rechts eingestellt sind? Auf welche Seite werden sich die Kinder ausrichten?Innen Außen
gravity
ordnet den Inhalt in der Ansicht an.layout_gravity
ordnet die Position der Ansicht außerhalb von sich selbst an.Manchmal hilft es auch, ein Bild zu sehen. Das Grün und Blau sind
TextViews
und die anderen beiden Hintergrundfarben sindLinearLayouts
.Anmerkungen
layout_gravity
funktioniert nicht für Ansichten in aRelativeLayout
. Verwenden Sie es für Ansichten in einemLinearLayout
oderFrameLayout
. Weitere Einzelheiten finden Sie in meiner ergänzenden Antwort .gravity
hat das keine Wirkung. Alsowrap_content
undgravity
sind zusammen bedeutungslos.layout_gravity
hat das keine Wirkung. Alsomatch_parent
undlayout_gravity
sind zusammen bedeutungslos.layout_gravity=center
sieht genauso aus wielayout_gravity=center_horizontal
hier, da sie sich in einem vertikalen linearen Layout befinden. In diesem Fall können Sie nicht vertikallayout_gravity=center
zentrieren, sondern nur horizontal zentrieren.gravity
undlayout_gravity
den Ansichten innerhalb eines Layouts. Um zu sehen, was passiert, wenn Siegravity
das übergeordnete Layout selbst festlegen , lesen Sie die ergänzende Antwort , auf die ich oben Bezug genommen habe. (Zusammenfassung:gravity
funktioniert bei a nicht gutRelativeLayout
, kann aber bei a nützlich seinLinearLayout
.)Denken Sie also daran, dass layout _gravity eine Ansicht in seinem Layout anordnet . Die Schwerkraft ordnet den Inhalt in der Ansicht an.
xml
Hier ist die XML für das obige Bild als Referenz:
verbunden
quelle
Der Unterschied
android:layout_gravity
ist die äußere Schwerkraft der Ansicht. Gibt die Richtung an, in die die Ansicht den Rand des übergeordneten Elements berühren soll.android:gravity
ist die innere Schwerkraft dieser Ansicht. Gibt an, in welche Richtung der Inhalt ausgerichtet werden soll.HTML / CSS-Entsprechungen
Einfacher Trick, der Ihnen hilft, sich zu erinnern
Nehmen Sie
layout-gravity
als "Lay-außerhalb-Schwerkraft".quelle
Kurze Antwort: Verwenden
android:gravity
odersetGravity()
steuern Sie die Schwerkraft aller untergeordneten Ansichten eines Containers. Verwendenandroid:layout_gravity
odersetLayoutParams()
steuern Sie die Schwerkraft einer einzelnen Ansicht in einem Container.Lange Geschichte: Um die Schwerkraft in einem linearen Layout-Container wie
LinearLayout
oder zu steuernRadioGroup
, gibt es zwei Ansätze:1) Um die Schwere ALLER untergeordneten Ansichten eines
LinearLayout
Containers zu steuern (wie Sie es in Ihrem Buch getan haben), verwenden Sieandroid:gravity
(nichtandroid:layout_gravity
) die XML-Layoutdatei oder diesetGravity()
Methode im Code.2) Verwenden Sie das
android:layout_gravity
XML-Attribut, um die Schwerkraft einer untergeordneten Ansicht in ihrem Container zu steuern . Im Code muss manLinearLayout.LayoutParams
die Ansicht abrufen und ihre Schwerkraft einstellen. Hier ist ein Codebeispiel, mit dem eine Schaltfläche in einem horizontal ausgerichteten Container nach unten gesetzt wird:Bei horizontalen
LinearLayout
Containern wird die horizontale Schwerkraft der untergeordneten Ansicht nacheinander linksbündig ausgerichtet und kann nicht geändert werden. Das Einstellenandroid:layout_gravity
aufcenter_horizontal
hat keine Auswirkung. Die standardmäßige vertikale Schwerkraft ist center (oder center_vertical) und kann nach oben oder unten geändert werden. Eigentlich ist der Standardwertlayout_gravity
,-1
aber Android hat ihn vertikal zentriert.Um die horizontalen Positionen von untergeordneten Ansichten in einem horizontalen linearen Container zu ändern, können Sie
layout_weight
die untergeordnete Ansicht mit Rand und Abstand verwenden.In ähnlicher Weise ist für den Container "Vertikale Ansichtsgruppe" die vertikale Schwerkraft der untergeordneten Ansicht oben untereinander ausgerichtet und kann nicht geändert werden. Die standardmäßige horizontale Schwerkraft ist der Mittelpunkt (oder
center_horizontal
) und kann nach links oder rechts geändert werden.Tatsächlich verfügt eine untergeordnete Ansicht wie eine Schaltfläche auch über ein
android:gravity
XML-Attribut und diesetGravity()
Methode zur Steuerung ihrer untergeordneten Ansichten - den darin enthaltenen Text. DasButton.setGravity(int)
ist mit diesem Eintrag von developer.android.com verknüpft .quelle
Was ich aus layout_gravity entnehmen kann, ist die Schwerkraft dieser Ansicht in ihrem übergeordneten Element und die Schwerkraft ist die Schwerkraft der Kinder in dieser Ansicht.
Ich denke, das ist richtig, aber der beste Weg, dies herauszufinden, ist herumzuspielen.
quelle
Schauen Sie sich das Bild an, um die Schwerkraft zu erkennen
quelle
Wenn wir die Schwerkraft von Inhalten in einer Ansicht festlegen möchten, verwenden wir "android :vity", und wenn wir die Schwerkraft dieser Ansicht (als Ganzes) in ihrer übergeordneten Ansicht festlegen möchten, verwenden wir "android:": layout_gravity ".
quelle
Ich dachte nur, ich würde hier meine eigene Erklärung hinzufügen - vor dem Hintergrund von iOS habe ich die beiden in iOS-Begriffen verinnerlicht: "Layout Gravity" wirkt sich auf Ihre Position in der Übersicht aus. "Schwerkraft" beeinflusst die Position Ihrer Unteransichten in Ihnen. Anders gesagt, Layout Gravity positioniert Sie selbst, während Gravity Ihre Kinder positioniert.
quelle
Es gibt viele Unterschiede im
gravity
undlayout-gravity
. Ich werde meine Erfahrungen mit diesen beiden Konzepten erläutern ( alle Informationen, die ich aufgrund meiner Beobachtung und einiger Websites erhalten habe ).Hinweis:-
Die Schwerkraft wird im Ansichtsinhalt verwendet, da einige Benutzer eine Antwort haben, und sie ist für alle gleich
ViewGroup Layout
.Layout-gravity
wird mit der übergeordneten Ansicht verwendet, da einige Benutzer eine Antwort haben.Gravity and Layout-gravity
ist die Arbeit mit denFrameLayout
Kindern nützlicher .We can't use Gravity and Layout-gravity
in FrameLayouts Tag ....Wir können Child View überall dort einstellen, wo es
FrameLayout
verwendet wirdlayout-gravity
.Wir können jeden einzelnen Wert der Schwerkraft im Innern des FrameLayout (zB: -
center_vertical
,center_horizontal
,center
,top
, usw.), aber es ist nicht möglich , mit anderen Viewgroup Layouts.FrameLayout
voll arbeitenLayout-gravity
. Beispiel: - Wenn Sie daran arbeiten, müssenFrameLayout
Sie nicht das gesamte Layout ändern, um eine neue Ansicht hinzuzufügen. Sie fügen einfach Ansicht als letzte in der hinzuFrameLayout
und geben ihmLayout-gravity
Wert. ( Dies ist ein Vorteil der Layout-Schwerkraft mit FrameLayout ).Ausgabe:-
Gravity
funktioniert wie oben, aber hier ist der Unterschied, dass wir die Schwerkraft innerhalb der verwenden könnenLinearLayout View
undRelativeLayout View
was in nicht möglich istFrameLayout View
.Hinweis: - Hier können wir nur 3 Werte davon einstellen
layout_gravity
(left
|right
|center
(auch genanntcenter_horizontal
)).Ausgabe:-
Hinweis: - Hier können wir auch 3 Werte davon einstellen
layout_gravity
(top
|bottom
|center
(auch genanntcenter_vertical
)).Ausgabe:-
Hinweis: - Wir können nicht
layout_gravity
in der verwenden,RelativeLayout Views
aber wir können verwendengravity
, umRelativeLayout
Kinder auf die gleiche Position zu setzen ....quelle
textColor
Weiß einstellenview
, wäre dies sehr gut. : DEin einfacher Trick, um sich daran zu erinnern, dass die Schwerkraft auf uns in der Erde zutrifft. Also,
android:gravity
ist für innerhalb der Ansicht.Merken aus dem heraus in lay out _gravity , die Sie zu erinnern , dass würde helfen
android:layout_gravity
würde sagen , dass außerhalb der Ansichtquelle
Etwas, das ich auf Sandips Blog gesehen habe und das ich fast verpasst hätte, hat mein Problem behoben. Er sagte,
layout_gravity
arbeitet nicht mitLinearLayout
.Wenn Sie ein verwenden
LinearLayout
und die Schwerkrafteinstellungen Sie verrückt machen (wie ich), wechseln Sie zu etwas anderem.Ich wechselte tatsächlich zu einem
RelativeLayout
dann verwendetenlayout_alignParentLeft
undlayout_alignParentRight
auf den 2 enthaltenenTextView
s, um sie in einer Zeile ganz nach links und ganz rechts zu bringen.quelle
Der grundlegende Unterschied zwischen den beiden ist, dass
android: Die Schwerkraft wird für untergeordnete Elemente der Ansicht verwendet.
android: layout_gravity wird für dieses Element in Bezug auf die übergeordnete Ansicht verwendet.
quelle
android:gravity
wird verwendet, um anzugeben, wie der Inhalt des Objekts innerhalb des Objekts selbst platziert werden soll. Mit anderen Worten, Android: Schwerkraft wird verwendet, um die Schwerkraft des Inhalts der Ansicht anzugeben.android:layout_gravity
ist eine Zuschreibung, die das Kind seinem Elternteil geben kann, um die Schwerkraft der Ansicht innerhalb seiner Eltern zu spezifizieren.Für weitere Details können Sie besuchen
quelle
Schwerkraft: Ermöglicht das Verschieben des Inhalts in einen Container. (Wie Unteransichten platziert werden).
Wichtig: (BEWEGEN Sie sich innerhalb des verfügbaren Platzes entlang der X- oder Y-Achse).
Beispiel: Wenn Sie mit LinearLayout (Höhe: match_parent, Breite: match_parent) als Element auf Stammebene arbeiten, steht Ihnen der gesamte Frame-Speicherplatz zur Verfügung. In den untergeordneten Ansichten heißt es, dass 2 Textansichten (Höhe: wrap_content, Breite: wrap_content) innerhalb des LinearLayout entlang der x / y-Achse verschoben werden können, wobei entsprechende Werte für die Schwerkraft auf dem übergeordneten Element verwendet werden.
Layout_Gravity: Ermöglicht das Überschreiben des übergeordneten Schwerkraftverhaltens NUR entlang der x-Achse.
Wichtig: (BEWEGEN [Überschreiben] entlang der X-Achse innerhalb des verfügbaren Platzes).
Beispiel: Wenn Sie das vorherige Beispiel berücksichtigen, wissen wir, dass die Schwerkraft es uns ermöglicht hat, uns entlang der x / y-Achse zu bewegen, dh; die Stelle TextViews in LinearLayout. Sagen wir einfach, LinearLayout gibt die Schwerkraft an: center; Das bedeutet, dass jede Textansicht sowohl vertikal als auch horizontal zentriert sein muss. Wenn nun eine der Textansichten nach links / rechts verschoben werden soll, können wir das angegebene Schwerkraftverhalten mithilfe von layout_gravity in der Textansicht überschreiben.
Bonus: Wenn Sie tiefer graben, werden Sie feststellen, dass Text in der Textansicht als Unteransicht fungiert. Wenn Sie also die Schwerkraft auf TextView anwenden, bewegt sich der Text in der TextView. (das gesamte Konzept gilt auch hier)
quelle
Die Schwerkraft wird verwendet, um die Textausrichtung in Ansichten festzulegen, aber layout_gravity wird verwendet, um Ansichten selbst festzulegen. Nehmen wir ein Beispiel, wenn Sie in editText geschriebenen Text ausrichten und dann die Schwerkraft verwenden möchten und diesen editText oder eine beliebige Schaltfläche oder Ansicht ausrichten möchten, dann verwenden Sie layout_gravity. Es ist also sehr einfach.
quelle
Schwerkraft : wird für einfache Ansichten wie Textansicht, Edittext usw. verwendet.
layout_gravity : wird für die aktuelle Ansicht nur die Schwerkraft im Kontext der relativen übergeordneten Ansicht wie lineares Layout oder FrameLayout verwendet, um die Ansicht in der Mitte oder einer anderen Schwerkraft der übergeordneten Ansicht zu erstellen.
quelle
wird verwendet, um den Inhalt der Ansicht relativ zu ihrer angegebenen Position (zugewiesener Bereich) anzupassen.
android:gravity="left"
würde nichts tun, wennlayout_width
gleich ist"wrap_content"
wird für die Ansicht selbst relativ zur übergeordneten oder Layoutdatei verwendet.
quelle
android:gravity
-> Legt die Schwerkraft des Inhalts der Ansicht fest, für die sie verwendet wird.android:layout_gravity
-> Legt die Schwerkraft der Ansicht oder des Layouts der Eltern festquelle
Schwerkraft - Gilt für seine eigene Ansicht.
Layout-Schwerkraft --- Gilt für die Ansicht, die sich auf das übergeordnete Element bezieht.
quelle
Das
android:gravity
legt die Schwerkraft (Position) der Kinder fest, während dasandroid:layout_gravity
die Position der Ansicht selbst festlegt. Ich hoffe es hilftquelle