- Нарушается принцип DRY в UI. Сочетание элементов используется в нескольких местах.
- Расширение поведения имеющихся компонент.
- Разбиения существующих layout для уменьшения сложности кода.
- Отображение объекта из слоя model или другого сложного объекта.
В отличии от layout содержит логику отображения (изменяемые состояния, логика заполнения). Если есть возможность обойтись одним layout c последующим использованием ей нужно воспользоваться.
-
Максимально декларативно - стараться как можно больше кода, связанного с внешним видом отобразить в xml файлах верстки, а не в файле класса view.
-
Использование атрибутов - помогает легче добиться успеха с предыдущим пунктом
-
Должна полноценно отображаться в редакторе Android Studio. Этому способствует
-
использование атрибутов из нэймспейса tools: для прототипирования. Например tools:text, tools:showIn
-
установка дефолтного состояния с данными.
-
-
Не должна требовать дополнительной инициализации (вызова дополнительных методов кастомной вью в теле активити, фрагмента и тп.) для корректной работы. Подразумевается, что вью имеет дефолтное состояние.
-
Использование в качестве корневого тега merge для уменьшения вложенности иерархии view. Для корректного отображения в превью проставляется тег tools:parentTag =(имя класса той вью с которой будет происходить мерж)
-
Не устанавливать внешние отступы внутри кастомной вью. На разных экранах и размерах экрана часто требуются разные отступы. Отступы следует задавать в той разметке где вью используется.
-
Перевод в необходимое состояние происходит через методы
render()илиbind()в зависимости от архитектуры. Вне вью могут быть доступны только листнеры. Запрещается взаимодейтсвовать с внутренними свойствами вью напрямую.