Я бы не хотел воскрешать старые потоки, но это проблема, на которую нет правильного ответа, и, кроме того, я сам столкнулся с этой проблемой.
Вот длинный кусок, если вам интереснов ответе пожалуйста прокрутите до кода:
android: гравитация и android: layout_gravity работает по-разному. Вот статья, которую я прочитал, которая помогла мне.
СУЩНОСТЬ статьи: гравитация влияет на вид после назначения высоты / ширины.Таким образом, центр тяжести не повлияет на вид, который выполняется FILL_PARENT (думайте об этом как об автоматическом поле).Центр layout_gravity БУДЕТ влиять на вид, который является FILL_PARENT (воспринимайте его как auto pad).
В основном, android: layout_gravity НЕ МОЖЕТ быть доступен программно, только android: 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 показывает «Нет связанных методов», что означает, что нельзя получить доступ программно.Принимая во внимание, что гравитация - это поле в классе.