Réponse courte: utilisez android:gravity
ou setGravity()
pour contrôler la gravité de toutes les vues enfant d'un conteneur; utiliser android:layout_gravity
ou setLayoutParams()
pour contrôler la gravité d'une vue individuelle dans un conteneur.
Longue histoire: pour contrôler la gravité dans un conteneur de disposition linéaire tel que LinearLayout
or RadioGroup
, il existe deux approches:
1) Pour contrôler la gravité de TOUTES les vues enfant d'un LinearLayout
conteneur (comme vous l'avez fait dans votre livre), utilisez android:gravity
(pas android:layout_gravity
) dans le fichier XML de mise en page ou la setGravity()
méthode dans le code.
2) Pour contrôler la gravité d'une vue enfant dans son conteneur, utilisez l' android:layout_gravity
attribut XML. En code, il faut obtenir LinearLayout.LayoutParams
la vue et régler sa gravité. Voici un exemple de code qui définit un bouton en bas dans un conteneur orienté horizontalement:
import android.widget.LinearLayout.LayoutParams;
import android.view.Gravity;
...
Button button = (Button) findViewById(R.id.MyButtonId);
// need to cast to LinearLayout.LayoutParams to access the gravity field
LayoutParams params = (LayoutParams)button.getLayoutParams();
params.gravity = Gravity.BOTTOM;
button.setLayoutParams(params);
Pour le LinearLayout
conteneur horizontal , la gravité horizontale de sa vue enfant est alignée à gauche l'une après l'autre et ne peut pas être modifiée. La définition android:layout_gravity
de center_horizontal
n'a aucun effet. La gravité verticale par défaut est center (ou center_vertical) et peut être changée en haut ou en bas. En fait, la layout_gravity
valeur par défaut est -1
mais Android l'a placé verticalement.
Pour modifier les positions horizontales des vues enfant dans un conteneur linéaire horizontal, on peut utiliser la layout_weight
marge et le remplissage de la vue enfant.
De même, pour le conteneur de groupe de vues vertical, la gravité verticale de sa vue enfant est alignée en haut l'une au-dessous de l'autre et ne peut pas être modifiée. La gravité horizontale par défaut est le centre (ou center_horizontal
) et peut être modifiée à gauche ou à droite.
En fait, une vue enfant telle qu'un bouton a également android:gravity
un attribut XML et la setGravity()
méthode pour contrôler ses vues enfant - le texte qu'il contient . Le Button.setGravity(int)
est lié à cette entrée developer.android.com .