Выбор ответа Junior Compose: композиция и рекомпозиция спрашивают часто обновлено
Порядок модификаторов
Вопрос
В чём разница между Modifier.padding(16.dp).background(Color.Red) и Modifier.background(Color.Red).padding(16.dp)?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: В первом отступ снаружи и фон только под содержимым, во втором фон и под отступом. Модификаторы применяются по цепочке слева направо, каждый оборачивает следующие. padding перед background уменьшает область, в которой рисуется фон, поэтому вокруг красного прямоугольника остаётся прозрачный отступ.
Варианты ответа
- Разницы нет: Compose сортирует модификаторы по типу перед применением
- Первый вариант не скомпилируется:
backgroundдолжен идти первым - Во втором случае отступ игнорируется, потому что фон занимает всё место
- В первом отступ снаружи и фон только под содержимым, во втором фон и под отступомправильный ответ
Разбор
Модификаторы применяются по цепочке слева направо, каждый оборачивает следующие. padding перед background уменьшает область, в которой рисуется фон, поэтому вокруг красного прямоугольника остаётся прозрачный отступ. Если background первый, он рисуется на всю область, а padding отодвигает только содержимое. Оба варианта компилируются и работают.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.