Относительная разметка (Relative Layout)

RelativeLayout это контейнер, который позволяет указать для дочерних элементов относительную позицию по отношению друг к другу (например, разместить левее или ниже), а также относительную позицию по отношению к родительскому контейнеру (например, выровнять по центру или по нижнему краю).

RelativeLayout это очень мощный компонент для создания пользовательского интерфейса, который позволяет ликвидировать вложенные группы и сохранить плоскую иерархию разметки, что повышает производительность. Если вы обнаружили в своей разметке большую вложенность LinearLayout, возможно вам стоить подумать насчет использования единственного контейнера RelativeLayout.

Позиции компонентов

RelativeLayout позволяет каждому дочернему элементу указать его позицию относительно других элементов, указав ID данных элементов. Так вы можете, например, выровнять два элемента по правому краю или разместить один на другим по центру, и так далее. По умолчанию все дочерние элементы выравниваются по верхнему левому краю контейнера и вы должны указать необходимую позицию с помощью одного из доступных свойств RelativeLayout.LayoutParams.

Вот некоторые из свойств:

android:layout_alignParentTop
Если true, сопоставляет верхний край элемента с верхним краем контейнера.
android:layout_centerVertical
Если true, размещает элемент вертикально по центру контейнера.
android:layout_below
Верхний край текущего элемента будет находиться ниже указанного элемента.
android:layout_toRightOf
Левый край текущего элемента будет находиться правее указанного элемента.

Здесь приведена лишь малая часть, остальные свойства смотрите в руководстве RelativeLayout.LayoutParams.

Значением свойств может быть true или false, если указывается позиция относительно родительского контейнера, либо идентификатор элемента, по отношению к которому вы располагаете текущий элемент.

Зависимости между элементами в XML разметке могут быть объявлены в любом порядке. Например, вы можете указать, что “view1″ расположен ниже “view2″, даже если “view2″ описан в файле последним. Пример ниже демонстрирует такой случай.

Пример

Подробности смотрите в документации по RelativeLayout и RelativeLayout.LayoutParams.

Добавить комментарий