betacode

Руководство Android UI Layouts

  1. Что такое Layout?
  2. Стандартные Layout в Android
  3. RelativeLayout
  4. LinearLayout
  5. TableLayout
  6. GridLayout
  7. FrameLayout

1. Что такое Layout?

Android Layout это класс управляющий как его подкомпоненты появляются на экране. Любой компонент является View (или дочерним от View) может быть дочерним Layout. Все классы Layout расширены из класса ViewGroup (дочерний View), поэтому вы тоже можете создать кастомизированный Layout, создав расширенный класс из ViewGroup.
  • Иллюстрация показывает иерархию наследия можеду интерфейсами в Android.

2. Стандартные Layout в Android

  • Стандартные Layout:
Layout
Описание
LinearLayout


(Horizontal)

(Vertical)

LinearLayout это ViewGroup который располагает дочерние компоненты по единственному направлениюб вертикально или горизонтально. Вы можете определить направление используя: android:orientation.

RelativeLayout

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

TableLayout

TableLayout это ViewGroup который отображает дочерние компоненты в строках и столбцах.

GridLayout

GridLayout использует сетку бесконечно тонких линий для отделения области рисования на: строки, столбцы и ячейки (cell). Он так же помогает расположить (span) строки и столбцы, то есть позволяет объединить смежные ячейки в большую ячекйку (прямоугольник) чтобы содержать View.
FrameLayout

FrameLayout это заполнитель на экране который вы можете использовать для отображение индивидуального View.

AbsoluteLayout

AbsoluteLayout позволяет указать точное местоположение детей. Расположите детей по координатам x, y.

  • The standard Containers:
Container
Description
RadioGroup

ListView

GridView

ExpandableListView

ScrollView

HorizontalScrollView

SearchView

TabHost

VideoView

DialerFilter

3. RelativeLayout

RelativeLayout это ViewGroup который изображает View в связанной позиции. Позиция каждого View может быть определен как связанный к другим дочерним View (например слева или внизу другого View) или в позициях связанных с родителем RelativeLayout (например расставить внизу, слева или в центре).
RelativeLayout это мощная утилита для дизайна интерфейса для пользователя, потому что она может исключить View группы и оставляет плоскую иерархию, а так же повысить производительность. Если используете несколько вложенных групп LinearLayout, вы можете их заменить единственным RelativeLayout.
Посмотрим на интерфейс ниже, и вы можете сделать такой используя RelativeLayout.
  • SLIDER:

4. LinearLayout

LinearLayout это ViewGroup который распределяет дочерние View по единственному направлению, по вертикали или по горизонтали.

5. TableLayout

TableLayout упорядочивает View внутри в формате таблицы. Точнее, TableLayout это ViewGroup содержащий один или более TableRow, каждый TableRow это строка (row) в таблице, содержащая ячейки (cell). Под-View могут быть расположены в одной ячейке или объединенной ячейке одной строки. В отличии от таблицы HTML, вы не можете объединить последовательные ячейки в столбце.

6. GridLayout

GridLayout использует сетку бесконечно тонких линий для отделения области рисования на: строки, столбцы и ячейки (cell). Он так же помогает расположить (span) строки и столбцы, то есть позволяет объединить смежные ячейки в большую ячекйку (прямоугольник) чтобы содержать View.
Размер (Size), Поля (Margin) и Выравнивание/Гравитация (Alignment/Gravity)
В GridLayout, определение размеров и границ похоже на LinearLayout. Выравнивание/гравитация (Alignment/gravity)так же работают как гравитация (gravity) в LinearLayout и использует похожие константы: left, top, right, bottom, center_horizontal, center_vertical, center, fill_horizontal, fill_vertical и fill.
Гибкость (Flexibility)
Не похожий на другое большигство инструментов, Android GridLayout не соединяет данные со строками или столбцами. Вместо этого, все делается с помощью Aligment (выравнивание) и гибкостью соединяется с самими компонентами.

Гибкость столбцов определятся из gravity (гравитации) компонентов в столбцах. Если компоненты определяют gravity, столб является гибким, если нет. то является негибким.
Example:
Заметка: Если коренной элемент не является GridLayout, вы можете поменять название тага без других измнений, так вы получите интерфейс с коренным элементом GridLayout.
Подкомпоненты определяют их позицию в сетке соответствуя атрибутам layout_row & layout_column:
С GridLayout, если в колонне сетки нет объекта, ширина этой сетки будет равняться 0. Так же если строка сетки не имеет объекта, высота сетки будет равна 0.
layout_columnWeight
В GridLayout атрибут layout_columnWeight это тяжесть по столбцу (column) объекта в ячейке, он влияет размещение по столбцу, по умолчанию его значение 0.
Если вы определяете другое значение помимо 0 для layout_columnWeight вам нужно настроить значение layout_gravity (гравитация layout) для объекта, это обязательно, без указания значения объекта layout_gravity может не отобразиться на сетке:
Значения для layout_gravity для данного случая должны быть:
left
right
center_horizontal
center
fill_horizontal
fill
layout_rowSpan
layout_rowWeight
В GridLayout атрибут layout_rowWeight это тяжесть по строкам (row) объекта в ячейке, он влияет на расположение по строками, значение по умолчанию является 0.
layout_columnSpan
OK, можете ли вы использовать GridLayout для дизайна интерфейса как показано ниже?

7. FrameLayout

FrameLayout это простой лейаут(layout), который может содержить один или много дочерних View, и они могут быть перекрыты (overlap) друг другом. Вам нужно использовать атрибут android:layout_gravity для дочерних View чтобы определить их местоположения.
Используйте атрибут android:layout_gravity для button чтобы настроить его местоположение.

Pуководства Android

Show More