Sticky Headers
Introduction
Registering a Sticky Header
scrollViewer.AddChild(header);
scrollViewer.RegisterStickyHeader(header);Code Example - Sectioned List with Sticky Headers
//initialize
var scrollViewer = new ScrollViewer();
scrollViewer.AddToRoot();
scrollViewer.Anchor(Anchor.Center);
scrollViewer.Width = 300;
scrollViewer.Height = 200;
string[] sectionNames = { "Vegetables", "Fruits", "Grains" };
foreach (var name in sectionNames)
{
// Build the header. Panels default to sizing to their children, so dock
// to fill horizontally and set a fixed height.
var header = new Panel();
header.Dock(Gum.Wireframe.Dock.FillHorizontally);
header.Height = 30;
header.HeightUnits = Gum.DataTypes.DimensionUnitType.Absolute;
var headerBackground = new ColoredRectangleRuntime();
headerBackground.Dock(Gum.Wireframe.Dock.Fill);
headerBackground.Color = Color.DarkSlateBlue;
header.AddChild(headerBackground);
var headerLabel = new Label();
headerLabel.Text = name;
headerLabel.X = 8;
header.AddChild(headerLabel);
// Add the header to the scroll viewer in its natural place in the stack,
// then mark it as sticky.
scrollViewer.AddChild(header);
scrollViewer.RegisterStickyHeader(header);
// Normal items follow.
for (int i = 0; i < 8; i++)
{
var label = new Label();
label.Text = $"{name} item {i + 1}";
scrollViewer.AddChild(label);
}
}Terminating a Sticky Region
Unregistering and Clearing
Notes and Limitations
Last updated
Was this helpful?

