Nie chciałbym wskrzeszać starych wątków, ale to jest problem, na który nie ma poprawnej odpowiedzi, a ponadto sam na to wpadłem.
Oto długa kwestia, jeśli interesuje Cię tylko odpowiedź, przewiń do samego kodu:
Android: grawitacja i Android: układ_grawitacja działa inaczej. Oto artykuł, który przeczytałem, który mi pomógł.
GIST artykułu: grawitacja wpływa na widok po przypisaniu wysokości / szerokości. Tak więc środek ciężkości nie wpłynie na wykonany widok FILL_PARENT (pomyśl o tym jak o automatycznym marginesie). layout_gravity center BĘDZIE wpływać na widok FILL_PARENT (pomyśl o tym jak o automatycznej padzie).
Zasadniczo android: layout_gravity NIE MOŻNA uzyskać dostępu programowego, tylko android: grawitacja. W przypadku OP i moim przypadku zaakceptowana odpowiedź nie umieszcza przycisku pionowo w środku.
Aby poprawić odpowiedź Karthi:
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.CENTER;
button.setLayoutParams(params);
Link do LinearLayout.LayoutParams
.
android: layout_gravity pokazuje „Brak powiązanych metod”, co oznacza, że nie można uzyskać dostępu programowego. Natomiast grawitacja jest polem w tej klasie.