Выбор ответа Junior Compose: композиция и рекомпозиция спрашивают часто обновлено

Порядок модификаторов

Вопрос

В чём разница между Modifier.padding(16.dp).background(Color.Red) и Modifier.background(Color.Red).padding(16.dp)?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: В первом отступ снаружи и фон только под содержимым, во втором фон и под отступом. Модификаторы применяются по цепочке слева направо, каждый оборачивает следующие. padding перед background уменьшает область, в которой рисуется фон, поэтому вокруг красного прямоугольника остаётся прозрачный отступ.

Варианты ответа

  1. Разницы нет: Compose сортирует модификаторы по типу перед применением
  2. Первый вариант не скомпилируется: background должен идти первым
  3. Во втором случае отступ игнорируется, потому что фон занимает всё место
  4. В первом отступ снаружи и фон только под содержимым, во втором фон и под отступомправильный ответ

Разбор

Модификаторы применяются по цепочке слева направо, каждый оборачивает следующие. padding перед background уменьшает область, в которой рисуется фон, поэтому вокруг красного прямоугольника остаётся прозрачный отступ. Если background первый, он рисуется на всю область, а padding отодвигает только содержимое. Оба варианта компилируются и работают.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.