Мені б не хотілося відроджувати старі теми, але це проблема, на яку не відповідають правильно, і більше того, я сам наткнувся на цю проблему.
Ось довгий біт, якщо вас цікавить лише відповідь, будь ласка, прокрутіть увесь шлях до коду:
android: гравітація та android: layout_gravita працює по-різному. Ось я прочитав статтю, яка мені допомогла.
ГІСТ статті: гравітація впливає на вигляд після призначення висоти / ширини. Тож центр тяжкості не вплине на вигляд, який робиться FILL_PARENT (подумайте про це як автоматичний запас). Центр layout_gravity вплине на перегляд, який є FILL_PARENT (подумайте про це, як про автоматичну панель).
В основному, андроїд: layout_gravity НЕ МОЖНА мати програмний доступ, лише андроїд: гравітація. У випадку ОП та в моєму випадку прийнята відповідь не розміщує кнопку вертикально в центрі.
Щоб покращити відповідь Карті:
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.CENTER;
button.setLayoutParams(params);
Посилання на LinearLayout.LayoutParams
.
android: layout_gravity показує "Без пов'язаних методів", тобто сенс не може бути доступний програмно. Тоді як гравітація - це поле у класі.