Ich würde es hassen, alte Threads wiederzubeleben, aber dies ist ein Problem, das nicht richtig beantwortet wird, und außerdem bin ich selbst auf dieses Problem gestoßen.
Wenn Sie nur an der Antwort interessiert sind, scrollen Sie bitte bis zum Code:
android :vity und android: layout_gravity funktionieren unterschiedlich. Hier ist ein Artikel, den ich gelesen habe und der mir geholfen hat.
GIST des Artikels: Die Schwerkraft beeinflusst die Ansicht, nachdem Höhe / Breite zugewiesen wurde. Der Schwerpunkt wirkt sich also nicht auf eine Ansicht aus, die mit FILL_PARENT ausgeführt wird (stellen Sie sich dies als automatischen Rand vor). layout_gravity center wirkt sich auf die Ansicht FILL_PARENT aus (stellen Sie sich das als Auto-Pad vor).
Grundsätzlich kann auf android: layout_gravity NICHT programmgesteuert zugegriffen werden, sondern nur auf android :vity. Im Fall des OP und in meinem Fall platziert die akzeptierte Antwort die Schaltfläche nicht vertikal in der Mitte.
Um Karthis Antwort zu verbessern:
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.CENTER;
button.setLayoutParams(params);
Link zu LinearLayout.LayoutParams
.
android: layout_gravity zeigt "Keine verwandten Methoden" an, was bedeutet, dass nicht programmgesteuert zugegriffen werden kann. Während die Schwerkraft ein Feld in der Klasse ist.