Идея использования компоновщиков вместо экранов крайне проста: на одном экране создаётся несколько полноэкранных вертикальных компоновщиков, переключение между которыми осуществляется путём изменения их видимости.
Создайте новый проект и в дизайнере добавьте на рабочее поле, например, компоновщик VerticalArrangement. Задайте его ширину и высоту равной родительскому элементу (значение Fill parent). Добавьте на компоновщик кнопку и другие компоненты. После этого сделайте данный компоновщик невидимым на рабочем поле и добавьте новый компоновщик, проделав все указанные выше операции. В результате на рабочем поле у нас будет два полноэкранных компоновщика, каждый из которых содержит разный набор компонентов.
В каждый момент времени должен быть виден только один компоновщик. Для этого в редакторе блоков нужно создать список компоновщиков и процедуру, в которой в цикле будет происходить перебор по элементам списка и отображение только того из них, строковое представление которого совпадает с заданным рис. 1.
Рис. 1. Алгоритм для переключения “экранов”.
Полноэкранные компоновщики можно использовать для реализации вкладок. В верхней части окна приложения создаётся компоновщик с компонентами, при нажатии на которые будет происходить переключение между вкладками, а в нижнюю часть окна добавляются полноразмерные компоновщики, которые и будут являться вкладками.
Компоновщики не имеют обработчики событий, в отличие от компонентов экранов, поэтому всю логику работы с ними придётся реализовать самостоятельно. Например, для реализации связи родитель-ребёнок нужно будет каким-то образом сохранять ссылку на родительский компоновщик, чтобы после закрытия дочернего окна отображать его, а не что-то другое.
В каких случаях стоит использовать полноэкранные компоновщики, а в каких экраны? При помощи компоновщиков можно реализовать более гибкую функциональность и стоит начать именно с них. Кроме того, работать в дизайнере и редакторе блоков с несколькими компоновщиками на одном экране проще. Если их функциональности не будет хватать, то можно будет расположить их на разных экранах..