Je ne voudrais pas ressusciter de vieux fils de discussion, mais il s'agit d'un problème auquel on ne répond pas correctement et, de plus, j'ai moi-même rencontré ce problème.
Voici la partie longue, si vous n'êtes intéressé que par la réponse, veuillez faire défiler la page jusqu'au code :
Android:gravity et Android:layout_gravity fonctionnent différemment. Aquí J'ai lu un article qui m'a aidé.
GIST de l'article : la gravité affecte la vue après l'attribution de la hauteur/largeur. Ainsi, le centre de gravité n'affectera pas une vue qui est faite FILL_PARENT (pensez-y comme une marge automatique). layout_gravity centre affectera la vue qui est faite FILL_PARENT (pensez-y comme une marge automatique).
Fondamentalement, Android:layout_gravity NE PEUT PAS être accessible par programmation, mais uniquement Android:gravity. Dans le cas de l'OP et dans le mien, 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 a LinearLayout.LayoutParams
.
Android:layout_gravity affiche "No related methods", ce qui signifie qu'il est impossible d'y accéder par programmation. Alors que gravity est un champ de la classe.
0 votes
Je crois que vous devez ajouter la vue à son parent pour qu'elle ait des LayoutParams qui ne soient pas nuls.