Краткий ответ: используйте 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имеет никакого эффекта. Вертикальная гравитация по умолчанию - центр (или center_vertical) и может быть изменен на верх или низ. На самом деле это layout_gravityзначение по умолчанию, -1но Android помещает его вертикально по центру.
Чтобы изменить горизонтальные позиции дочерних представлений в горизонтальном линейном контейнере, можно использовать layout_weightполя и отступы дочернего представления.
Аналогично, для контейнера вертикальной группы представлений вертикальная гравитация его дочернего вида выравнивается по вертикали друг над другом и не может быть изменена. Горизонтальная гравитация по умолчанию - центр (или center_horizontal) и может быть изменена влево или вправо.
На самом деле, дочернее представление, такое как кнопка, также имеет android:gravityатрибут XML и setGravity()метод для управления его дочерними представлениями - текст в нем. Button.setGravity(int)Связан с этой записи developer.android.com .