Quelle est la différence entre la gravité et layout_gravity dans Android?
Je sais que nous pouvons définir les valeurs suivantes pour le android:gravity
et android:layout_gravity
propriétés:
center
center_vertical
center_horizontal
, etc.
Mais je suis confus en ce qui concerne les deux de ces.
Quelle est la différence entre l'utilisation de android:gravity
et android:layout_gravity
?
- Truc facile à retenir: Prendre le "schéma de la gravité" "Laïcs-à l'extérieur-de la gravité"
- centre d' == center_vertical | center_horizontal
- Ces vidéos m'ont beaucoup aidé à comprendre la différence: youtube.com/watch?v=DxfYeAUd238 youtube.com/watch?v=1FyAIWLVcTc
ImageView
's semblent se comporter différent deTextView
's.
Vous devez vous connecter pour publier un commentaire.
Leurs noms devraient vous aider:
android:gravity
définit la gravité du contenu (c'est à dire son sous-vues) de laView
il est utilisé sur.android:layout_gravity
définit la gravité de laView
ouLayout
par rapport à son parent.Et un exemple est ici.
layout_
définit quelque chose que les effets sur les éléments à l'extérieur.android:gravity
est défini à gauche et de ses enfantsandroid:layout_gravity
est définie à droite? de quel côté les enfants à aligner?à l'Intérieur - à l'Extérieur
gravity
organise le contenu à l'intérieur de la vue.layout_gravity
organise le point de vue de la position à l'extérieur de lui-même.Parfois, il permet de voir une image, trop. Le vert et le bleu sont
TextViews
et les deux autres couleurs de fond sontLinearLayouts
.Notes
layout_gravity
ne fonctionne pas pour les vues dans unRelativeLayout
. L'utiliser pour les vues dans unLinearLayout
ouFrameLayout
. Voir mon complémentaire de réponse pour plus de détails.gravity
n'aura aucun effet. Ainsi,wrap_content
etgravity
sont vides de sens ensemble.layout_gravity
n'aura aucun effet. Ainsi,match_parent
etlayout_gravity
sont vides de sens ensemble.layout_gravity=center
a la même apparence quelayout_gravity=center_horizontal
ici parce qu'ils sont dans un linéaire verticale de mise en page. Vous ne pouvez pas centrer verticalement dans ce cas,layout_gravity=center
seuls centres horizontalement.gravity
etlayout_gravity
sur les points de vue au sein d'un modèle. Pour voir ce qui se passe lorsque vous définissez lagravity
de la de la mère de mise en page elle-même, découvrez la complémentaire de réponse que j'ai évoqué ci-dessus. (Résumé:gravity
ne fonctionne pas bien sur unRelativeLayout
mais peut être utile avec unLinearLayout
.)Donc n'oubliez pas, disposition_gravity organise un point de vue dans son disposition. La gravité organise le contenu à l'intérieur de la vue.
xml
Voici le code xml pour l'image ci-dessus pour votre référence:
Liées
La différence
android:layout_gravity
est le à l'Extérieur la gravité de la Vue. Spécifie la direction dans laquelle l'avis doit toucher à l'un de ses parents frontière.android:gravity
est le à l'Intérieur de la gravité de ce point de Vue. Spécifie la direction de son contenu doivent s'aligner.HTML/CSS Équivalents de
Truc facile pour vous aider à vous souvenir de
Prendre
layout-gravity
"Laïcs-à l'extérieur-de la gravité".Réponse courte: utilisation
android:gravity
ousetGravity()
à contrôler la gravité de toutes les vues enfant d'un conteneur; utilisationandroid:layout_gravity
ousetLayoutParams()
à contrôler la gravité d'une personne vue dans un récipient.Longue histoire: pour le contrôle de la gravité dans un linéaire conteneur de mise en forme tels que
LinearLayout
ouRadioGroup
, il y a deux approches:1) Pour le contrôle de la gravité de l'enfance à la vue d'un
LinearLayout
conteneur (comme vous l'avez fait dans votre livre), l'utilisationandroid:gravity
(pasandroid:layout_gravity
) dans la mise en page fichier XML ousetGravity()
méthode dans le code.2) Pour le contrôle de la gravité d'un enfant en vue de son conteneur, utilisez
android:layout_gravity
attribut XML. Dans le code, on doit obtenir leLinearLayout.LayoutParams
de l'afficher et de définir la gravité de la situation. Voici un exemple de code que de définir un bouton vers le bas, dans une orientation horizontale contenant:Horizontal
LinearLayout
conteneur, à l'horizontale de la gravité de sa vue enfant est aligné à gauche, l'un après l'autre et ne peut pas être modifié. Réglageandroid:layout_gravity
àcenter_horizontal
n'a aucun effet. La valeur par défaut verticale de gravité est le centre (ou center_vertical) et peut être changé vers le haut ou le bas. Le défautlayout_gravity
valeur est-1
mais Android mettre centrer verticalement.Pour modifier la position horizontale de l'enfant du point de vue dans un linéaire horizontale conteneur, on peut utiliser
layout_weight
, la marge et le remplissage de la vue enfant.De même, pour un point de Vue vertical conteneur de Groupe, à la verticale de la gravité de sa vue enfant est alignée en haut un en dessous de l'autre et ne peut pas être modifié. L'horizontale par défaut gravité est le centre (ou
center_horizontal
) et peut être modifié à gauche ou à droite.En fait, un enfant de voir comme un bouton a également
android:gravity
attribut XML et lesetGravity()
la méthode de contrôle de son enfant vues -- le texte qu'il contient. LeButton.setGravity(int)
est lié à ce developer.android.com entrée.De ce que je peux recueillir layout_gravity est la gravité de ce point de vue à l'intérieur de son parent, et gravité est la gravité de la enfants à l'intérieur de ce point de vue.
Je pense que c'est juste, mais la meilleure façon de le savoir est de jouer.
Regarder l'image pour être clair au sujet de la gravité
Si la question est déjà répondu, j'ai quelques échantillons de démonstration de l'utilisation de la gravité, layout_gravity, et layout_weight.
Vous trouverez des exemples à http://juanpickselov.com/LayoutExamples.zip
J'ai créé les fichiers dans Eclipse, suppression de l' .svn sous-dossiers et ont inclus des styles, des chaînes, les couleurs, etc. Les fichiers de mise en page sont le principal point de démos. Depuis que je suis un Java et de développement Android Newbie, on peut trouver la Java inefficace. Les fichiers peuvent être copiés dans un Projet Eclipse ou je l'ai aussi utilisé dans Netbeans avec le développement Android plugin pour que l'IDE.
Si nous voulons définir la gravité de contenu à l'intérieur d'un point de vue ensuite, nous allons utiliser "android:gravity", et si nous voulons définir la gravité de ce point de vue (dans son ensemble) à l'intérieur de la vue parente ensuite, nous allons utiliser "android:layout_gravity".
Juste pensé que je voudrais ajouter ma propre explication ici - à venir à partir d'un arrière-plan sur iOS, c'est de cette façon que j'ai intériorisé les deux dans iOS termes: "la Disposition de la Gravité" affecte votre position dans le superview. "Gravity" affecte la position de votre sous-vues à l'intérieur de vous. Dit d'une autre manière, la Mise en page de la Gravité des positions de vous-même alors que la gravité des positions de vos enfants.
Il y a beaucoup de différence dans le
gravity
etlayout-gravity
. Je vais vous expliquer mon expérience sur ces 2 concepts(Toutes les informations que j'ai obtenu en raison de mon observation et de certains sites web).Remarque:-
Gravité est utilisé à l'intérieur de la Afficher le Contenu que certains Utilisateurs ont la réponse et il en est de même pour tous les
ViewGroup Layout
.Layout-gravity
est utilisé avec la Vue parent que certains Utilisateurs ont la réponse.Gravity and Layout-gravity
est travail plus utile avec leFrameLayout
childs .We can't use Gravity and Layout-gravity
dans FrameLayout de la Balise ....Nous pouvons définir la Vue Enfant n'importe où dans le
FrameLayout
à l'aide delayout-gravity
.Nous pouvons utiliser chaque valeur unique de gravité à l'intérieur de la FrameLayout (par exemple:-
center_vertical
,center_horizontal
,center
,top
, etc), mais il n'est pas possible avec d'autres ViewGroup Mises en page .FrameLayout
pleinement de travail surLayout-gravity
. Exemple:- Si vous travaillez surFrameLayout
alors vous n'avez pas besoin de changer toute la Mise en page pour l'ajout d'une nouvelle Vue. Vous venez de ajouter une Vue en dernier dans laFrameLayout
et de lui donnerLayout-gravity
avec la valeur.(C'est adavantages de mise en page-gravité avec FrameLayout).De sortie:-
Gravity
de travail de même que ci-dessus mais ici differnce est que nous pouvons utiliser la Gravité à l'intérieur de laLinearLayout View
etRelativeLayout View
qui n'est pas possible dansFrameLayout View
.Remarque:- Ici, nous pouvons définir seulement 3 valeurs de
layout_gravity
qui est (left
|right
|center
(également appelécenter_horizontal
)).De sortie:-
Remarque:- Ici, nous pouvons définir également les 3 valeurs de
layout_gravity
qui est (top
|bottom
|center
(également appelécenter_vertical
)).de sortie:-
Remarque:- On ne peut pas utiliser
layout_gravity
dans leRelativeLayout Views
, mais nous pouvons utilisergravity
pour définirRelativeLayout
childs à la même position....textColor
blanc dans toutes lesview
alors il serait très grande. 😀Quelque chose que j'ai vu sur le blog de Jonathan que j'ai presque manqué, fixe mon problème. Il a dit
layout_gravity
NE fonctionne PAS AVECLinearLayout
.Si vous utilisez un
LinearLayout
et la gravité sont les paramètres de vous conduire noix (comme moi), puis de passer à autre chose.J'ai effectivement passé à un
RelativeLayout
ensuite utilisélayout_alignParentLeft
etlayout_alignParentRight
sur les 2 contenusTextView
s sur une seule ligne pour aller à l'extrême gauche et extrême droite.Un truc facile à retenir c'est la gravité qui s'applique à nous à l'intérieur de la terre. Donc,
android:gravity
est pour à l'intérieur de la vue.Rememeber la hors dans laïcshors_gravity qui vous aidera à vous rappeler que
android:layout_gravity
ferait référence à à l'extérieur la vueandroid:gravity
est utilisé pour spécifier la façon de placer le contenu de l'objet à l'intérieur de l'objet lui-même. En un mot, android:la gravité est utilisée pour spécifier la gravité du contenu de la vue.android:layout_gravity
est une attribution de l'enfant peut fournir à ses parents, afin de préciser la gravité de la vue à l'intérieur de ses parents.Pour plus de détails, vous pouvez visiter
La différence fondamentale entre les deux est que-
android:gravity est utilisé pour les éléments enfants de la vue.
android:layout_gravity est utilisé pour cet élément à l'égard de la vue parente.
Gravité: vous Permettent de déplacer le contenu à l'intérieur d'un conteneur. (Comment les sous-vues seront placés).
Important: (se DÉPLACER le long de l'axe X ou l'axe Y à l'intérieur de l'espace disponible).
Exemple: disons que si vous étiez à travailler avec LinearLayout (Hauteur: match_parent, Largeur: match_parent) comme au niveau de la racine de l'élément, puis vous aurez le plein cadre de l'espace disponible et de l'enfant vues, dit 2 TextViews (Hauteur: wrap_content, Largeur: wrap_content) à l'intérieur de la LinearLayout peut être déplacée le long de l'axe x/y à l'aide de valeurs correspondantes de la pesanteur sur le parent.
Layout_Gravity: vous Permettent de remplacer le parent de la gravité du comportement UNIQUEMENT le long de l'axe des x.
Important: (MOVE[remplacer] le long de l'axe X à l'intérieur de l'espace disponible).
Exemple: Si vous gardez à l'esprit l'exemple précédent, nous savons que la gravité a permis de passer le long de l'axe x/y, je.e; le lieu TextViews à l'intérieur de LinearLayout. Disons simplement LinearLayout spécifie la gravité: center; ce qui signifie que chaque TextView doit être le centre à la fois verticalement et horizontalement. Maintenant, si nous voulons un des TextView pour aller à gauche/droite, nous pouvons remplacer la spécifié de la gravité du comportement à l'aide de layout_gravity sur le TextView.
Bonus: si vous creusez plus profond, vous trouverez ce texte dans le TextView agir en tant que sous-vue; donc si vous appliquez la gravité sur TextView, le texte à l'intérieur du TextView permettra de vous déplacer. (la totalité de ce concept s'applique ici aussi)
La gravité est utilisée pour définir l'alignement du texte dans la vue, mais layout_gravity est l'utilisation de l'ensemble des vues sur elle-même. Prenons un exemple, si vous souhaitez aligner le texte écrit dans l'editText puis utilisez la gravité et que vous souhaitez aligner cette editText ou n'importe quel bouton ou de toute vue, puis utilisez layout_gravity, Donc, il est très simple.
gravité: est utilisé pour de simples vues comme textview, edittext etc.
layout_gravity: est utilisé pour la vue actuelle de la gravitation dans le cadre de c'est parent parent vue comme linéaire de la Mise en page ou FrameLayout de faire afficher dans le centre ou tout autre gravité de son parent.
est utilisée pour ajuster le contenu de la vue par rapport à son spécifier la position (zone allouée).
android:gravity="left"
ne ferait rien silayout_width
est égale à la"wrap_content"
est utilisé pour la vue elle-même par rapport au parent ou un fichier de mise en page.
android:gravity
-> Définit la gravité du contenu de la Vue de son utilisé sur.android:layout_gravity
-> Définit la gravité de celle du Parent de l'affichage ou de la Dispositiongravité--s'Applique à son propre point de vue.
mise en page-gravité---s'Applique à vue lié à sa mère.