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

View more Tutorials:

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, столб является гибким, если нет. то является негибким.
Пример:
Заметка: Если коренной элемент не является  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 чтобы настроить его местоположение.

View more Tutorials: