Эшафот против поверхности

Я прохожу некоторые начальные лаборатории Google Codelabs для Android/Kotlin. Текущий шаблон No Action из Android Studio предоставляет скелет кода Scaffold верхнего уровня. Но вместо этого Codelabs показывает Surface. Я предполагаю, что это связано с каким-то историческим сдвигом? Обычно мне приходится заменять Scaffold на Surface в сгенерированном скелетном коде, чтобы получить поведение, описанное в Codelabs (обычно из-за различий в заполнении, унаследованных через Scaffold), что раздражает.

В чем разница между Scaffold и Surface для композиции пользовательского интерфейса верхнего уровня? Каковы плюсы и минусы каждого? Что считается общепринятой наилучшей практикой?

Связано: stackoverflow.com/questions/78442465/…

Leviathan 02.08.2024 01:02
0
1
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Одна из причин, по которой вам следует использовать Scaffold вместо Surface, заключается в том, что недавно Google рекомендовал приложениям использовать enableEdgeToEdge(). Это даже применяется начиная с Android 15.

Если включена функция «от края до края», ваше приложение занимает весь размер экрана, от верхнего до нижнего края экрана. Это также означает, что ваше приложение должно правильно обрабатывать наложение панелей состояния и системной навигации, а также рисовать вокруг вставок, таких как вырез камеры.

В некоторой степени это можно обрабатывать автоматически, если вы используете компоненты макета Material 3, такие как Scaffold. Scaffold предоставляет параметр PaddingValues к своему содержимому, который вы должны применить с модификатором padding к самому внешнему содержимому Scaffold. Это позаботится об изменении размера остальной части вашего приложения в соответствии с вставками, сохраняя при этом полноэкранный просмотр от края до края.

Это было бы сложнее, если бы вы использовали поверхность вместо каркаса.

По ссылке выше:

Важно: если ваше приложение еще не является сквозным, части вашего приложения могут быть скрыты, и вам придется обрабатывать вставки. В зависимости от приложения эта работа может быть значительной или незначительной. Компонент Material 3 Scaffold может упростить работу, необходимую для обеспечения совместимости с сквозным обеспечением Android 15.

Другие вопросы по теме