Основным строительным блоком для пользовательского интерфейса является объект View, который создается из класса View и занимает прямоугольную область на экране и отвечает за рисование и обработку событий. Представление — это базовый класс для виджетов, которые используются для создания интерактивных компонентов пользовательского интерфейса, таких как кнопки, текстовые поля и т. Д.
ViewGroup является подклассом View и предоставляет невидимый контейнер, который содержит другие виды или другие ViewGroups и определяет их свойства макета.
На третьем уровне у нас есть различные макеты, которые являются подклассами класса ViewGroup, и типичный макет определяет визуальную структуру пользовательского интерфейса Android и может быть создан либо во время выполнения с использованием объектов View / ViewGroup, либо вы можете объявить свой макет с помощью простого XML-файла main_layout .xml, который находится в папке res / layout вашего проекта.
Параметры макета
Это руководство больше о создании вашего графического интерфейса на основе макетов, определенных в файле XML. Макет может содержать виджеты любого типа, такие как кнопки, метки, текстовые поля и т. Д. Ниже приведен простой пример XML-файла с LinearLayout —
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="This is a TextView" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="This is a Button" /> <!-- More GUI components go here --> </LinearLayout>
После того как макет создан, вы можете загрузить ресурс макета из кода приложения в своей реализации обратного вызова Activity.onCreate (), как показано ниже:
public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
}
Типы макетов Android
Существует ряд макетов, предоставляемых Android, которые вы будете использовать практически во всех приложениях Android для обеспечения различного вида, внешнего вида и ощущений.
| Sr.No | Макет и описание | 
|---|---|
| 1 |   Линейный макет 
 LinearLayout — это группа представлений, которая выравнивает все дочерние элементы в одном направлении, по вертикали или по горизонтали.  | 
| 2 |   Относительная компоновка 
 RelativeLayout — это группа представлений, которая отображает дочерние представления в относительных позициях.  | 
| 3 |   Макет таблицы 
 TableLayout — это представление, которое группирует представления в строки и столбцы.  | 
| 4 |   Абсолютная планировка 
 AbsoluteLayout позволяет указать точное местоположение его дочерних элементов.  | 
| 5 |   Структура кадра 
 FrameLayout — это заполнитель на экране, который можно использовать для отображения одного представления.  | 
| 6 |   Посмотреть список 
 ListView — это группа представлений, которая отображает список прокручиваемых элементов.  | 
| 7 |   Вид сетки 
 GridView — это ViewGroup, которая отображает элементы в двумерной сетке с возможностью прокрутки.  | 
LinearLayout — это группа представлений, которая выравнивает все дочерние элементы в одном направлении, по вертикали или по горизонтали.
RelativeLayout — это группа представлений, которая отображает дочерние представления в относительных позициях.
TableLayout — это представление, которое группирует представления в строки и столбцы.
AbsoluteLayout позволяет указать точное местоположение его дочерних элементов.
FrameLayout — это заполнитель на экране, который можно использовать для отображения одного представления.
ListView — это группа представлений, которая отображает список прокручиваемых элементов.
GridView — это ViewGroup, которая отображает элементы в двумерной сетке с возможностью прокрутки.
Атрибуты макета
Каждый макет имеет набор атрибутов, которые определяют визуальные свойства этого макета. Среди всех макетов мало общих атрибутов, и они являются другими атрибутами, специфичными для этого макета. Ниже приведены общие атрибуты, которые будут применяться ко всем макетам:
| Sr.No | Атрибут и описание | 
|---|---|
| 1 | 
 андроид: идентификатор Это идентификатор, который однозначно идентифицирует вид.  | 
| 2 | 
 андроид: layout_width Это ширина макета.  | 
| 3 | 
 андроид: layout_height Это высота макета  | 
| 4 | 
 андроид: layout_marginTop Это дополнительное пространство на верхней стороне макета.  | 
| 5 | 
 андроид: layout_marginBottom Это дополнительное пространство в нижней части макета.  | 
| 6 | 
 андроид: layout_marginLeft Это дополнительное пространство на левой стороне макета.  | 
| 7 | 
 андроид: layout_marginRight Это дополнительное пространство на правой стороне макета.  | 
| 8 | 
 андроид: layout_gravity Это определяет, как позиционируются дочерние представления.  | 
| 9 | 
 андроид: layout_weight Это указывает, сколько дополнительного пространства в макете должно быть выделено для представления.  | 
| 10 | 
 андроид: layout_x Это определяет X-координату макета.  | 
| 11 | 
 андроид: layout_y Это определяет Y-координату макета.  | 
| 12 | 
 андроид: layout_width Это ширина макета.  | 
| 13 | 
 андроид: layout_width Это ширина макета.  | 
| 14 | 
 андроид: paddingLeft Это заполнение слева для макета.  | 
| 15 | 
 андроид: paddingRight Это правильный отступ для макета.  | 
| 16 | 
 андроид: paddingTop Это верхний отступ для макета.  | 
| 17 | 
 андроид: paddingBottom Это нижний отступ, заполненный для макета.  | 
андроид: идентификатор
Это идентификатор, который однозначно идентифицирует вид.
андроид: layout_width
Это ширина макета.
андроид: layout_height
Это высота макета
андроид: layout_marginTop
Это дополнительное пространство на верхней стороне макета.
андроид: layout_marginBottom
Это дополнительное пространство в нижней части макета.
андроид: layout_marginLeft
Это дополнительное пространство на левой стороне макета.
андроид: layout_marginRight
Это дополнительное пространство на правой стороне макета.
андроид: layout_gravity
Это определяет, как позиционируются дочерние представления.
андроид: layout_weight
Это указывает, сколько дополнительного пространства в макете должно быть выделено для представления.
андроид: layout_x
Это определяет X-координату макета.
андроид: layout_y
Это определяет Y-координату макета.
андроид: layout_width
Это ширина макета.
андроид: layout_width
Это ширина макета.
андроид: paddingLeft
Это заполнение слева для макета.
андроид: paddingRight
Это правильный отступ для макета.
андроид: paddingTop
Это верхний отступ для макета.
андроид: paddingBottom
Это нижний отступ, заполненный для макета.
Здесь ширина и высота — это размерность макета / вида, которая может быть указана в единицах dp (пиксели, не зависящие от плотности), sp (пиксели, не зависящие от масштаба), pt (точки, составляющие 1/72 дюйма), px ( Пиксели), мм (миллиметры) и, наконец, в (дюймах).
Вы можете указать ширину и высоту с точными измерениями, но чаще вы будете использовать одну из этих констант для установки ширины или высоты —
- 
android: layout_width = wrap_content указывает вашему виду масштабироваться до размеров, требуемых его содержимым.
 - 
android: layout_width = fill_parent говорит о том, что ваше представление становится таким же большим, как и его родительское представление.
 
android: layout_width = wrap_content указывает вашему виду масштабироваться до размеров, требуемых его содержимым.
android: layout_width = fill_parent говорит о том, что ваше представление становится таким же большим, как и его родительское представление.
Атрибут Gravity играет важную роль в позиционировании объекта представления и может принимать одно или несколько (разделенных ‘|’) из следующих постоянных значений.
| постоянная | Значение | Описание | 
|---|---|---|
| Топ | 0x30 | Выдвиньте объект в верхнюю часть его контейнера, не меняя его размера. | 
| низ | 0x50 | Выдвиньте объект на дно его контейнера, не меняя его размера. | 
| оставил | 0x03 | Нажмите объект слева от его контейнера, не меняя его размера. | 
| право | 0x05 | Толкайте объект справа от его контейнера, не меняя его размера. | 
| center_vertical | 0x10 | Поместите объект в вертикальный центр его контейнера, не меняя его размера. | 
| fill_vertical | 0x70 | При необходимости увеличьте размер объекта по вертикали, чтобы он полностью заполнил свой контейнер. | 
| center_horizontal | 0x01 | Поместите объект в горизонтальный центр его контейнера, не меняя его размера. | 
| fill_horizontal | 0x07 | При необходимости увеличьте горизонтальный размер объекта, чтобы он полностью заполнил свой контейнер. | 
| центр | 0x11 | Поместите объект в центр его контейнера как по вертикальной, так и по горизонтальной оси, не меняя его размера. | 
| заполнить | 0x77 | Увеличьте горизонтальный и вертикальный размер объекта, если это необходимо, чтобы он полностью заполнил свой контейнер. | 
| clip_vertical | 0x80 | Дополнительная опция, которую можно установить, чтобы верхний и / или нижний края дочернего элемента были обрезаны до границ его контейнера. Клип будет основан на вертикальной гравитации: верхняя гравитация обрезает нижний край, нижняя гравитация обрезает верхний край, и ни один из них не обрезает оба края. | 
| clip_horizontal | 0x08 | Дополнительная опция, которую можно установить, чтобы левый и / или правый края дочернего элемента были обрезаны до границ его контейнера. Клип будет основан на горизонтальной гравитации: левая сила тяжести обрезает правый край, правая сила тяжести обрезает левый край, и ни один из них не обрезает оба края. | 
| Начните | 0x00800003 | Выдвиньте объект в начало его контейнера, не меняя его размера. | 
| конец | 0x00800005 | Толкайте объект до конца его контейнера, не меняя его размера. | 
Посмотреть идентификацию
Объекту представления может быть присвоен уникальный идентификатор, который будет уникально идентифицировать представление в дереве. Синтаксис для идентификатора внутри тега XML:
android:id="@+id/my_button"
Ниже приводится краткое описание знаков @ и + —
Символ-символ (@) в начале строки указывает, что анализатор XML должен проанализировать и развернуть оставшуюся часть строки идентификатора и идентифицировать ее как ресурс идентификатора.
Знак плюс (+) означает, что это новое имя ресурса, которое необходимо создать и добавить в наши ресурсы. Чтобы создать экземпляр объекта представления и захватить его из макета, используйте следующее —
