Зачем использовать DrawerLayout вместо поведения CoordinatorLayout для NavigationView

Я изучал реализацию DrawerLayout и начал задаваться вопросом, почему команда библиотеки поддержки Android решила создать новый макет вместо создания нового Behavior для CoordinatorLayout, который будет помещен в «NavigationView». То же самое касается SwipeRefreshLayout.

Есть ли какая-то конкретная причина, по которой они решили реализовать таким образом?

1
0
165
2

Ответы 2

Насколько я помню, CoordinatorLayout был представлен позже макету Drawer. И, насколько я знаю и понимаю, был введен Drawer Layout, чтобы помещать параметры с помощью файла меню в ящик, следуя всем упомянутым рекомендациям по дизайну по умолчанию.

Если говорить о макете Coordinator, то его основная работа заключается в настройке других компонентов пользовательского интерфейса внутри него в связи с некоторыми изменениями любого из компонентов co-UI макета.

Поэтому, если вы говорите о добавлении поведения макета ящика в макет координатора, это не подойдет для работы макета координатора. Согласно пользовательскому интерфейсу, макет ящика отображается вне основного макета, то есть вне макета координатора. Кроме того, при макете ящика ничего не корректируется. Таким образом, он не может быть частью макета координатора.

«Согласно пользовательскому интерфейсу, макет ящика отображается вне основного макета, то есть вне макета координатора». DrawerLayout — это вообще не пользовательский интерфейс для отображения, NavigationView — это пользовательский интерфейс. Когда NavigationView перемещается, другие виды корректируются. Например, значок на панели инструментов может анимироваться, поэтому между одним из дочерних элементов (NavigationView) и другим Toolbar существует зависимость. Но даже если бы это было не так, нет ничего, требующего отношения зависимости, оно просто поддерживает, на самом деле BottomSheetBehavior не имеет по умолчанию никакой зависимости.

Allan Veloso 02.03.2019 21:31

Все указывает на то, что нет особой технической причины использовать DrawerLayout вместо CoordinatorLayout.Behavior. Чтение его реализации почти похоже на чтение реализации Behavior.

На самом деле, реализация боковых листов, шаблон которых в основном представляет собой тот же лист, что и ящик, кажется, что это будет реализовано как поведение, как BottomSheetBehavior.

CoordinatorLayout.Behavior был представлен в версии 24.1.0, а DrawerLayout в версии 22.1.0, поэтому, возможно, они поняли, что DrawerLayout можно обобщить, но не хотели осуждать его и тратить больше времени на тот же шаблон, но это всего лишь предположение.

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