Custom Fragments

Last edit: 2023.07.27

Knowledge of the system UI will help you to understand this guide. If you are not yet familiar with it, feel free to take a look at the system UI overview.

Customizing fragments allows you to change the look and feel of an existing GenericPanel. This can be done in 3 steps listed below. The full example can be found here.

Define a custom fragment

To define a custom fragment, you have to create an subclass of IviFragment, and a view binding for it. You can find the exact syntax for it in the example.

If the existing ViewModel is usable for the custom fragment, and you can reuse it if it's a public API. Otherwise, you can create your own ViewModel. The example referenced above uses the existing ViewModel.

Define a custom fragment rule

A custom fragment rule is a way to communicate to the system UI, that you want to create a certain IviFragment for a certain GenericPanel. The first rule that accepts the create of the fragment for a given panel creates the fragment. If no rule accepts, the panel creates the fragment.

To create a custom fragment rule, you have to extend the CustomFragmentRule, as you can see in the example.

Use a custom fragment rule in a system UI host

To make the system UI aware of the rule, fragmentFactory has to be overridden in your SystemUiHost, and the rule has to be added to it.

1override val fragmentFactory: IviFragmentFactory =
2 IviFragmentFactory.create {
3 addRule(CustomFragmentRule())
4 }

You can find an example of a custom SystemUiHost implementation with such an override here.