Je détesterais ressusciter d'anciens threads mais c'est un problème auquel on ne répond pas correctement et en plus j'ai rencontré ce problème moi-même.
Voici le long morceau, si vous êtes uniquement intéressé par la réponse, faites défiler jusqu'au code:
android: gravity et android: layout_gravity fonctionne différemment. Voici un article que j'ai lu qui m'a aidé.
GIST de l'article: la gravité affecte la vue une fois la hauteur / largeur affectée. Le centre de gravité n'affectera donc pas une vue effectuée FILL_PARENT (pensez-y comme marge automatique). Le centre de layout_gravity affectera la vue qui est FILL_PARENT (pensez-y comme pad automatique).
Fondamentalement, android: layout_gravity NE PEUT PAS être accessible par programme, uniquement android: gravity. Dans le cas de l'OP et dans mon cas, la réponse acceptée ne place pas le bouton verticalement au centre.
Pour améliorer la réponse de Karthi:
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.CENTER;
button.setLayoutParams(params);
Lien vers LinearLayout.LayoutParams
.
android: layout_gravity affiche "Aucune méthode associée", ce qui ne peut pas être consulté par programmation. Alors que la gravité est un domaine de la classe.