A container that visualizes Panels.
The purpose of a panel container is to display the container data of type CD received through ttiviPanelContainerData. CD can be a single panel, a collection of panels or any other panel-related type.
A panel container contains zero or more sub-containers. A sub-container is a grouping of one or more panels that animate together. A sub-container can also be a visual element. This happens when there are visible elements in it's layout, determined by ttiviSubContainerLayoutId. If no value is set, the panel container provides a default layout.
In more technical terms, a sub-container is a ViewGroup responsible for displaying the sub- container data of type SD. SD can be a single panel, a collection of panels or any other panel-related type. It is derived from the ttiviPanelContainerData.
Each sub-container has one or more panel fragment containers. A panel fragment container defines the location and area where an IviFragment created by a Panel is attached. A panel fragment container should be a FragmentContainerView, to prevent a WrongFragmentContainerViolation.
In practice a panel container will implement this interface and extend a ViewGroup. The properties of this class will be set through view binding, and thus are all nullable. This does not mean all properties are optional, a panel container requires ttiviPanelContainerContext to manage panels.
A panel container provides PanelContext to a Panel when attaching it. All panel containers must provide at least a CommonPanelContext. They can provide additional context, like a NavigablePanelStackContext. A panel can only be displayed by a panel container if the panel container provides sufficient context.
When creating a new panel container, the Create a custom panel container guide is a good starting point.