Was ist der Unterschied zwischen Schwerkraft und layout_gravity in Android?
Ich weiß, wir können die folgenden Werte, um die android:gravity
und android:layout_gravity
Eigenschaften:
center
center_vertical
-
center_horizontal
usw.
Aber ich bin verwirrt in Bezug auf diese beiden.
Was ist der Unterschied zwischen der Verwendung von android:gravity
und android:layout_gravity
?
- Einfacher trick zu merken: Nehmen Sie die "layout-Schwerkraft" als "Lay-außen gravity"
- center == center_vertical | center_horizontal
- Diese videos haben mir sehr geholfen zu verstehen Sie den Unterschied: youtube.com/watch?v=DxfYeAUd238 youtube.com/watch?v=1FyAIWLVcTc
ImageView
's scheinen, Verhalten sich anders alsTextView
's.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre Namen sollten dir helfen:
android:gravity
setzt die Schwerkraft an den Inhalten (d.h. seine subviews) desView
es verwendet.android:layout_gravity
setzt die Schwerkraft derView
oderLayout
relativ zu seinem übergeordneten Element.Und ein Beispiel ist hier.
layout_
definiert etwas, dass die Auswirkungen der Elemente außerhalb.android:gravity
"Links" eingestellt ist und seine Kinderandroid:layout_gravity
auf rechts festgelegt ist? die Seite der Kinder zu richten?Inside - Outside
gravity
ordnet die Inhalte innen den Blick.layout_gravity
ordnet die Ansicht die position außerhalb von selbst.Manchmal hilft es zu sehen, ein Bild, zu. Die grünen und blauen sind
TextViews
und die anderen zwei Farben im hintergrund sindLinearLayouts
.Hinweise
layout_gravity
funktioniert nicht für Ansichten, die in einerRelativeLayout
. Verwenden Sie es für Ansichten in einerLinearLayout
oderFrameLayout
. Siehe meine Ergänzende Antwort für mehr details.gravity
keine Wirkung haben. Sowrap_content
undgravity
sind bedeutungslos zusammen.layout_gravity
keine Wirkung haben. Somatch_parent
undlayout_gravity
sind bedeutungslos zusammen.layout_gravity=center
sieht genauso aus, wielayout_gravity=center_horizontal
hier, weil Sie in einer vertikalen linearen layout. Sie können nicht vertikal zentrieren in diesem Fall, solayout_gravity=center
nur Zentren horizontal.gravity
undlayout_gravity
auf die Ansichten in einem layout. Um zu sehen, was passiert, wenn Sie diegravity
von der des übergeordneten layout selbst, schauen Sie sich die Ergänzende Antwort, dass ich von den oben genannten. (Zusammenfassung:gravity
funktioniert nicht gut auf eineRelativeLayout
kann aber sinnvoll sein, mit einemLinearLayout
.)Also denken Sie daran, layout_gravity vermittelt ein Blick in seine layout. Schwerkraft ordnet die Inhalte in den Blick.
xml
Hier ist der xml-Code für das obige Bild für Ihre Referenz:
Verwandte
Der Unterschied
android:layout_gravity
ist die Außerhalb Schwerkraft der Ansicht. Gibt an, in welche Richtung sollte die Ansicht Tippen Sie auf den übergeordneten Rahmen.android:gravity
ist die Innen Schwerkraft in der Sicht. Gibt an, in welche Richtung Ihre Inhalte ausrichten soll.HTML/CSS-Äquivalente
Einfachen trick, um Ihnen helfen, denken Sie daran
Nehmen
layout-gravity
als "Lay-außen gravity".Kurze Antwort: verwenden Sie
android:gravity
odersetGravity()
zu Steuern, die Schwerkraft aller untergeordneten Ansichten eines Behälters; Verwendungandroid:layout_gravity
odersetLayoutParams()
zu kontrollieren Schwerkraft einer einzelnen Ansicht in einem container.Lange Geschichte: zur Kontrolle der Schwerkraft in einem linearen layout-container wie
LinearLayout
oderRadioGroup
gibt es zwei Ansätze:1) Zum Steuern der Schwerkraft ALLER untergeordneten Ansichten eines
LinearLayout
container (wie Sie es in Ihrem Buch), verwenden Sieandroid:gravity
(nichtandroid:layout_gravity
) im layout-XML-Datei odersetGravity()
- Methode im code.2) Zum Steuern der Schwerkraft von einer untergeordneten Ansicht in den container verwenden
android:layout_gravity
XML-Attribut. Im code braucht man, um dieLinearLayout.LayoutParams
von der Ansicht und setzen Sie seine Schwerkraft. Hier ist ein code Beispiel, dass eine Taste nach unten in eine horizontal ausgerichtete Behälter:Für horizontale
LinearLayout
container, der horizontale Schwerpunkt Ihrer untergeordneten Ansicht ist Linksbündig ausgerichtet, eine nach der anderen und kann nicht geändert werden. Einstellungandroid:layout_gravity
zucenter_horizontal
hat keine Wirkung. Der vertikale Standard-Schwerkraft-center (oder center_vertical) und kann geändert werden, um oben oder unten. Eigentlich die Standard -layout_gravity
Wert ist-1
aber Android legen Sie es vertikal zentrieren.Ändern Sie die horizontale Position des Kind-Ansichten in einer horizontalen linear-container, kann man sich
layout_weight
, margin und padding des Kindes anzeigen.Ebenso für die vertikale Ansicht-Group-container, der vertikale Schwerpunkt Ihrer untergeordneten Ansicht ist nach oben ausgerichtet werden unten eine andere und kann nicht geändert werden. Die Standard-horizontale Schwerkraft-center (oder
center_horizontal
) und kann geändert werden, um Links oder rechts.Eigentlich, ein Kind Blick wie eine Schaltfläche auch ist
android:gravity
XML-Attribut und diesetGravity()
Methode zur Kontrolle Ihrer untergeordneten Ansichten -- der text. DieButton.setGravity(int)
ist verknüpft mit diesem developer.android.com Eintrag.Von dem, was ich sammeln können, layout_gravity ist die Schwerkraft, die den Blick ins innere Ihrer Muttergesellschaft und Schwerkraft ist die Schwerkraft, die von den Kindern innerhalb dieser Ansicht.
Ich denke, das ist richtig, aber der beste Weg, um herauszufinden, ist zu spielen, um.
Blick auf das Bild klar zu sein über die Schwerkraft
Obwohl die Frage schon beantwortet ich habe einige Beispiele demonstrieren die Verwendung der Schwerkraft, layout_gravity, und layout_weight.
Finden Sie die Beispiele an http://juanpickselov.com/LayoutExamples.zip
Habe ich die Dateien in Eclipse, entfernt .svn-Unterordner haben und Formatvorlagen, Zeichenfolgen, Farben, etc. Die layout-Dateien sind der wichtigste Punkt der demos. Da ich ein Java-und Android-Entwicklung Newbie kann man die Java-ineffizient. Die Dateien können kopiert werden in ein Eclipse-Projekt, oder habe ich auch verwendet, Sie in Netbeans mit der Android-Entwicklung-plugin für das IDE.
Wenn wir wollen, um die Schwerkraft von Inhalten innerhalb einer Ansicht dann werden wir "android:gravity", und wenn wir wollen, um die Schwerkraft dieser Ansicht (als ganzes) innerhalb der übergeordneten Ansicht dann werden wir "android:layout_gravity".
Dachte, ich würde meine eigene Erklärung hier - ich komme aus einem hintergrund, die auf iOS, ist dies, wie ich schon verinnerlicht, zwei in iOS Begriffe: "Layout " Schwerkraft" wirkt sich auf Ihre position in der superview. "Gravity" wirkt sich auf die position Ihrer Untersichten in dir. Mit anderen Worten, Layout Schwerkraft Positionen, die Sie sich selbst, während die Schwerkraft Positionen Ihre Kinder.
Gibt es viele Unterschied in der
gravity
undlayout-gravity
. Ich werde erklären, meine Erfahrung über diese 2 Begriffe(Alle Informationen, die ich bekam aufgrund meiner Beobachtung und einige Webseiten).Hinweis:-
Schwerkraft ist im Inhalt Anzeigen wie einige User haben die Antwort und es ist die gleiche für alle
ViewGroup Layout
.Layout-gravity
mit der übergeordneten Ansicht, da einige Benutzer haben Antwort.Gravity and Layout-gravity
ist Arbeit mehr nützlich mit derFrameLayout
childs .We can't use Gravity and Layout-gravity
im FrameLayout Tag ....Können wir Untergeordnete Ansicht, wo jeder in der
FrameLayout
mitlayout-gravity
.Wir können jeden einzelnen Wert der Schwerkraft im inneren des FrameLayout (z.B.:-
center_vertical
,center_horizontal
,center
,top
, etc), aber es ist nicht möglich, mit anderen ViewGroup Layouts .FrameLayout
voll arbeitenLayout-gravity
. Beispiel:- Wenn Sie die Arbeit anFrameLayout
dann nicht ändern müssen ganze Layout zum hinzufügen neuer Anzeigen. Sie nur add View als Letzte in derFrameLayout
und ihmLayout-gravity
mit Wert.(Dies ist adavantages von layout-Schwerkraft-mit FrameLayout).Ausgabe:-
Gravity
arbeiten wie oben, aber hier Unterschied ist, dass wir die Nutzung der Schwerkraft im inneren derLinearLayout View
undRelativeLayout View
was nicht möglich ist, inFrameLayout View
.Hinweis: wir Hier können nur 3 Werte
layout_gravity
ist (left
|right
|center
(auch alscenter_horizontal
)).Ausgabe:-
Hinweis:- Hier können wir auch 3 Werte
layout_gravity
ist (top
|bottom
|center
(auch alscenter_vertical
)).Ausgabe:-
Hinweis:- Wir können nicht
layout_gravity
imRelativeLayout Views
aber wir könnengravity
zu setzenRelativeLayout
childs auf derselben position....textColor
weiß in allenview
dann wäre es sehr toll. 😀Etwas sah ich auf Sandip blog, den ich fast verpasst, Fix mein problem. Er sagte
layout_gravity
FUNKTIONIERT NICHT MITLinearLayout
.Wenn Sie einen
LinearLayout
und die Schwerkraft Einstellungen fahren Sie Nüsse, die (wie ich), dann auf etwas anderes umzusteigen.Habe ich eigentlich eingeschaltet, um eine
RelativeLayout
dann verwendetlayout_alignParentLeft
undlayout_alignParentRight
auf die 2 enthaltenenTextView
s, um Sie auf eine Linie zu weit Links und weit rechts.Einen einfachen trick, sich daran zu erinnern, ist die Schwerkraft gilt für uns in der Erde. Also
android:gravity
ist für innen die Sicht.Erinnern, die aus in lagaus_gravity, die helfen würde, Sie daran zu erinnern, dass
android:layout_gravity
finden würde, um außerhalb die Ansichtandroid:gravity
wird verwendet, um anzugeben, wie der Inhalt des Objekts in das Objekt selbst. In einem anderen Wort, android:gravity wird verwendet, um die schwere der Inhalt der Ansicht.android:layout_gravity
ist ein Attribut, das Kind kann die Versorgung seiner Eltern, um anzugeben, die Schwerkraft, die die Sicht innerhalb seiner Eltern.Für mehr details besuchen Sie
Der grundlegende Unterschied zwischen den beiden ist, dass-
android:gravity wird verwendet für Kind-Elemente der view.
android:layout_gravity wird für dieses element mit Bezug auf übergeordnete Ansicht.
Schwerkraft: Ermöglichen, bewegen Sie den Inhalt in einem container. (Wie sub-Ansichten platziert werden).
Wichtig: (VERSCHIEBEN entlang der X-Achse oder Y-Achse im Rahmen der verfügbaren Speicherplatz).
Beispiel: Lassen Sie uns sagen, wenn Sie wurden für die Arbeit mit LinearLayout (Höhe: match_parent, Breite: match_parent) als root-level-element, dann haben Sie full-frame-space zur Verfügung; und die untergeordneten Ansichten sagt 2 TextViews (Höhe: wrap_content, Breite: wrap_content) innerhalb des LinearLayout kann verschoben werden, um entlang der x - /y-Achse, indem Sie die entsprechenden Werte für die Schwerkraft auf die Eltern.
Layout_Gravity: Erlauben Sie das überschreiben der übergeordneten Schwerkraft Verhalten NUR entlang der x-Achse.
Wichtig: (BEWEGEN Sie[überschreiben] entlang der X-Achse innerhalb der verfügbare Speicherplatz).
Beispiel:, Wenn Sie daran denken, die früheren Beispiel wissen wir, Schwerkraft, die uns ermöglicht, uns zu bewegen entlang x - /y-Achse, ich.e; der Ort, TextViews innere LinearLayout. Sagen wir einfach LinearLayout gibt gravity: center; bedeutet, dass jede TextView muss sein Zentrum, sowohl vertikal und horizontal. Nun, wenn wir wollen einer der TextView zu gehen, Links/rechts, können wir überschreiben die angegebene Verhalten "Schwerkraft" mit layout_gravity auf die TextView.
Bonus: wenn Sie tiefer Graben, werden Sie feststellen, dass text in die TextView handeln als sub-view; also, wenn Sie die Schwerkraft auf TextView, wird der text in die TextView bewegen wird. (das gesamte Konzept gelten auch hier)
Schwerkraft wird verwendet, um text-Ausrichtung in Aussicht, aber layout_gravity ist, verwenden um die Ansichten selbst. Nehmen wir ein Beispiel, wenn Sie möchten, richten Sie text im editText dann verwenden Sie die Schwerkraft, und Sie möchten, richten Sie diese editText oder eine beliebige Taste oder einer beliebigen Ansicht verwenden Sie dann layout_gravity, So dass es sehr einfach.
Schwerkraft: wird verwendet für einfache Ansichten wie textview, edittext etc..
layout_gravity: bei aktuellen Ansicht nur die Schwerkraft im Kontext seiner relativen übergeordneten Ansicht linear Layout-oder FrameLayout, um anzeigen im center oder in einem anderen Schwerpunkt Ihrer Eltern.
anzupassen ist für den Inhalt der anzeigen relativ zu seiner position angeben (zugewiesenen Bereich).
android:gravity="left"
würde nicht alles tun, wennlayout_width
ist gleich der"wrap_content"
ist für view-sich relativ zu den Eltern-oder layout-Datei.
android:gravity
-> Setzt die Schwerkraft den Inhalt der Anzeigen verwendet, die auf.android:layout_gravity
-> Setzt die Schwerkraft der Eltern ist der Ansicht oder LayoutSchwerkraft--Gilt für seine eigene Ansicht.
layout-gravity---Gilt für anzeigen in Bezug auf seine Eltern.