Короткий відповідь: використовувати 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 .