Макеты и представления
Проектируйте пользовательские интерфейсы с помощью XML-макетов. Используйте ConstraintLayout, LinearLayout и распространённые представления, такие как TextView, Button, ImageView и EditText.
«Макеты и представления» — бесплатный урок Android Academy на CoddyKit. Это урок 3 из 7. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Android Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Android Academy содержит 7 уроков всего.
Создание интерфейсов с помощью XML
Пользовательские интерфейсы Android определяются в XML-файлах разметки, которые хранятся в res/layout/. Разметка описывает структуру и внешний вид экрана — какие представления отображаются и где.
Затем код Kotlin разворачивает эту разметку и взаимодействует с представлениями во время работы приложения.
Распространённые типы представлений
Наиболее часто используемые виджеты View:
TextView— отображает текстEditText— поле для ввода текста- Кнопка — кнопка, которую можно нажать
ImageView— отображает изображениеCheckBox— переключатель включения и выключенияSwitch— переключатель включения и выключения (Material)
ConstraintLayout
ConstraintLayout — рекомендуемый тип разметки для большинства экранов. Он позволяет размещать представления относительно друг друга или родительского элемента с помощью ограничений — например, соединяя опорные точки.
- Плоская иерархия — вложенные разметки не нужны
- Гибкость — поддерживает экраны любых размеров
- Используется по умолчанию в новых проектах Android Studio
XML-разметка ConstraintLayout
TextView, выровненный по центру экрана в ConstraintLayout:
<!-- res/layout/activity_main.xml -->
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tvTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello Android!"
android:textSize="24sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>LinearLayout
LinearLayout размещает представления в одной строке или одном столбце:
android:orientation="vertical"— размещать представления сверху внизandroid:orientation="horizontal"— размещать представления рядом друг с другомandroid:layout_weight— пропорционально распределять оставшееся пространство
Это простой и предсказуемый вариант, но избегайте глубокой вложенности.
Основные атрибуты разметки
У каждого View есть следующие важные атрибуты:
layout_width/layout_height:match_parent,wrap_contentили фиксированное значение в dpid: используется для обращения к представлению в Kotlinmargin: пространство за пределами представленияpadding: пространство внутри представления
Используйте dp для размеров (пиксели, не зависящие от плотности), а sp — для размеров текста.
ScrollView
Если содержимое выше экрана, поместите его в ScrollView:
- Может содержать только одного непосредственного потомка (обычно LinearLayout)
- По умолчанию поддерживает вертикальную прокрутку
- Для горизонтальной прокрутки используйте
HorizontalScrollView
Для длинных динамических списков используйте RecyclerView — он эффективнее.
Поиск представлений в коде
Есть два способа обращаться к представлениям в коде Kotlin:
findViewById(R.id.tvTitle)— классический способ, возвращает представление по ID- ViewBinding — современный подход: создаёт класс привязки из XML и обеспечивает типобезопасный доступ ко всем представлениям
Настоятельно рекомендуется использовать ViewBinding — вы изучите его на следующем уроке.
Использование findViewById
Получение доступа к представлениям и их изменение из onCreate:
import android.os.Bundle
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val tvTitle = findViewById<TextView>(R.id.tvTitle)
tvTitle.text = "Welcome!"
tvTitle.textSize = 20f
}
}Быстрая проверка
Какую единицу измерения следует использовать для размера текста в разметке Android?
Повторение: разметки и представления
Теперь вы умеете создавать экраны Android:
- Интерфейсы определяются в XML-файлах разметки в
res/layout/ - Распространённые представления: TextView, EditText, Button, ImageView
- ConstraintLayout — гибкий, плоский и рекомендуемый
- LinearLayout — простое размещение в строку или столбец
- Используйте
dpдля размеров, аsp— для текста - Обращайтесь к представлениям в Kotlin с помощью
findViewById
Далее: сделаем интерфейс интерактивным, обрабатывая ввод пользователя.
Часто задаваемые вопросы
Урок «Макеты и представления» бесплатный?
Да — полный текст урока «Макеты и представления» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Android Academy, подпишись на CoddyKit PRO. Курс Android Academy содержит 7 уроков всего.
Чему я научусь в уроке «Макеты и представления»?
Проектируйте пользовательские интерфейсы с помощью XML-макетов. Используйте ConstraintLayout, LinearLayout и распространённые представления, такие как TextView, Button, ImageView и EditText. Ты практикуешь Android Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Android Academy?
Предыдущий опыт не требуется. Android Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 7.
Сколько времени занимает урок «Макеты и представления»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Android Academy?
Да. Каждый урок Android Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Структура проекта и манифест
- Активности и жизненный цикл
- Макеты и представления
- Обработка ввода пользователя
- Намерения и навигация
- Фрагменты
- Разрешения и запросы во время выполнения