Короткий відповідь: використовувати android:gravityабо setGravity()контролювати гравітацію всіх дитячих поглядів контейнера; використання android:layout_gravityабо setLayoutParams()для контролю тяжкості індивідуального виду в контейнері.
Довга історія: для управління силою тяжіння в контейнері з лінійною компонуванням, таким як LinearLayoutабо RadioGroup, є два підходи:
1) Для контролю тяжкості ВСІХ дитячих представлень LinearLayoutконтейнера (як це було у вашій книзі) використовуйте android:gravity(не android:layout_gravity) у макеті XML-файл або setGravity()метод у коді.
2) Для контролю тяжкості дитячого подання в його контейнері використовуйте android:layout_gravityатрибут XML. У коді потрібно отримати LinearLayout.LayoutParamsвигляд і встановити його тяжкість. Ось приклад коду, який встановлює кнопку внизу в горизонтально орієнтованому контейнері:
import android.widget.LinearLayout.LayoutParams;
import android.view.Gravity;
...
Button button = (Button) findViewById(R.id.MyButtonId);
// need to cast to LinearLayout.LayoutParams to access the gravity field
LayoutParams params = (LayoutParams)button.getLayoutParams();
params.gravity = Gravity.BOTTOM;
button.setLayoutParams(params);
Для горизонтального LinearLayoutконтейнера горизонтальна гравітація його дочірнього виду розташована одна за одною ліворуч і не може бути змінена. Установка android:layout_gravityдля center_horizontalне має ніякого ефекту. Вертикальна гравітація за замовчуванням - це центр (або центр_вертика) і може змінюватися вгорі або внизу. Насправді layout_gravityзначенням за замовчуванням є, -1але Android поставив його по центру вертикально.
Для зміни горизонтальних позицій дитячих поглядів у горизонтальному лінійному контейнері можна використовувати layout_weight, поле та накладку дитячого подання.
Аналогічно, для контейнера з вертикальною групою перегляду вертикальна гравітація його дочірнього виду розташована у верхній частині одна під одною і не може бути змінена. За замовчуванням горизонтальна гравітація є центром (або center_horizontal) і може бути змінена вліво або вправо.
Насправді, дочірній вигляд, такий як кнопка, також має android:gravityатрибут XML та setGravity()спосіб керування його дочірніми переглядами - текст у ньому. Посилання Button.setGravity(int)пов'язане з цим записом developer.android.com .