Ich möchte ungern alte Threads wiederbeleben, aber dieses Problem wird nicht richtig beantwortet, und außerdem bin ich selbst schon auf dieses Problem gestoßen.
Hier ist der lange Teil, wenn Sie nur an der Antwort interessiert sind, scrollen Sie bitte ganz nach unten zum Code:
Android:gravity und Android:layout_gravity funktionieren unterschiedlich. Hier Das ist ein Artikel, den ich gelesen habe und der mir geholfen hat.
GIST des Artikels: Die Schwerkraft wirkt sich auf die Ansicht aus, nachdem die Höhe/Breite zugewiesen wurde. Der Schwerpunkt wirkt sich also nicht auf eine Ansicht aus, die mit FILL_PARENT erstellt wurde (denken Sie an den automatischen Rand). layout_gravity center wirkt sich auf eine Ansicht aus, die mit FILL_PARENT erstellt wurde (denken Sie an das automatische Pad).
Grundsätzlich kann auf Android:layout_gravity NICHT programmatisch zugegriffen werden, nur auf Android:gravity. Im Fall des Auftraggebers und in meinem Fall platziert die akzeptierte Antwort die Schaltfläche nicht vertikal zentriert.
Um die Antwort von Karthi zu verbessern:
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.CENTER;
button.setLayoutParams(params);
Link a LinearLayout.LayoutParams
.
Android:layout_gravity zeigt "No related methods" an, was bedeutet, dass kein programmatischer Zugriff möglich ist. Die Schwerkraft ist hingegen ein Feld in der Klasse.