Модель измерения и размещения
Разберитесь в одноэтапной компоновке Compose.
«Модель измерения и размещения» — бесплатный урок Jetpack Compose Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Jetpack Compose Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Jetpack Compose Academy содержит 4 уроков всего.
Когда встроенных компоновок недостаточно
Column, Row и Box подходят для большинства экранов. Но иногда Вам нужен полный контроль над расположением дочерних элементов. Тогда Вы создаёте собственную компоновку. 🎨
Compose выполняет компоновку за один проход
В отличие от старой системы View, Compose измеряет и размещает всё за один проход. Дорогого цикла «измерить, а затем измерить ещё раз» нет.
Два шага: измерить, затем разместить
Каждая компоновка последовательно выполняет две операции. Сначала она измеряет каждый дочерний элемент, чтобы узнать его размер. Затем размещает каждый элемент в выбранной позиции.
Измеряемые элементы — ещё не имеющие размера дочерние элементы
Родитель получает дочерние элементы как измеряемые элементы. Измеряемый элемент — это ещё не измеренный дочерний элемент, как посылка до взвешивания. 📦
Измерение создаёт размещаемый элемент
Вызовите measure для измеряемого элемента и получите размещаемый элемент. Он знает свои окончательные ширину и высоту и готов к позиционированию.
val placeable = measurable.measure(constraints)
val w = placeable.widthОграничения задают пределы размера
При измерении Вы передаёте ограничения: минимальные и максимальные ширину и высоту, разрешённые для дочернего элемента. Элемент выбирает размер в этих пределах.
Измеряйте каждый дочерний элемент ровно один раз
Правило одного прохода означает, что каждый дочерний элемент нужно измерить только один раз. Повторное измерение того же элемента вызывает ошибку во время выполнения.
Родитель определяет собственный размер
После измерения дочерних элементов родитель сообщает собственные ширину и высоту. Обычно он выбирает размер, чтобы обернуть только что измеренные дочерние элементы.
layout(width, height) {
// place children here
}Размещение задаёт позицию каждого дочернего элемента
В блоке компоновки вызовите для каждого размещаемого элемента placeRelative, передав ему координаты x и y. Именно там дочерний элемент окажется на экране.
placeable.placeRelative(x = 0, y = 0)placeRelative учитывает направление
Предпочитайте placeRelative методу place. Он автоматически зеркально отражает позиции для языков с письмом справа налево, поэтому компоновка работает везде. 🌍
Эта модель лежит в основе каждой компоновки
Column, Row и Ваши будущие собственные компоновки используют один и тот же ритм: измерить, затем разместить. Освойте его один раз — и поймёте всю компоновку Compose.
Быстрая проверка
Что Вы получаете после измерения измеряемого элемента?
Итоги: модель измерения и размещения
Compose выполняет компоновку за один проход: измеряет каждый дочерний элемент один раз в заданных ограничениях, чтобы получить размещаемые элементы, а затем размещает их. Эта модель лежит в основе каждой создаваемой Вами компоновки. ✅
Изучай Kotlin с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 30
- Уроки
- 120
Часто задаваемые вопросы
Урок «Модель измерения и размещения» бесплатный?
Да — полный текст урока «Модель измерения и размещения» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Jetpack Compose Academy, подпишись на CoddyKit PRO. Курс Jetpack Compose Academy содержит 4 уроков всего.
Чему я научусь в уроке «Модель измерения и размещения»?
Разберитесь в одноэтапной компоновке Compose. Ты практикуешь Jetpack Compose Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Jetpack Compose Academy?
Предыдущий опыт не требуется. Jetpack Compose Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Модель измерения и размещения»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Jetpack Compose Academy?
Да. Каждый урок Jetpack Compose Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Модель измерения и размещения
- Написание компоновки Composable
- Ограничения и внутренние измерения
- FlowRow с переносом чипов