.NET MAUI ScrollView Tutorial – Inhalte einfach scrollbar machen
Wenn du mit .NET MAUI Anwendungen entwickelst, wirst du früher oder später auf das Problem stoßen, dass der verfügbare Bildschirmplatz nicht ausreicht, um alle Inhalte gleichzeitig anzuzeigen. Genau dafür gibt es das ScrollView-Steuerelement.
In diesem Tutorial lernst du, wie du eine ScrollView in .NET MAUI verwendest, welche Eigenschaften wichtig sind und welche Best Practices du beachten solltest.
Was ist eine ScrollView?
Eine ScrollView ermöglicht es Benutzern, Inhalte zu scrollen, die größer sind als der sichtbare Bereich des Bildschirms.
Typische Einsatzgebiete sind:
-
Lange Formulare
-
Detailansichten
-
Einstellungen-Seiten
-
Artikel- und Textanzeigen
-
Dynamische Inhalte
Ohne ScrollView würden Teile des Inhalts außerhalb des Bildschirms liegen und nicht erreichbar sein.
Erste ScrollView erstellen
Die einfachste Variante besteht darin, ein Layout innerhalb einer ScrollView zu platzieren.
<ScrollView>
<VerticalStackLayout Padding="20">
<Label
Text="Willkommen zum MAUI ScrollView Tutorial"
FontSize="24"
FontAttributes="Bold" />
<Label Text="Dies ist ein langer Text..." />
<Label Text="Weitere Informationen..." />
<Label Text="Noch mehr Inhalt..." />
</VerticalStackLayout>
</ScrollView>
Die ScrollView selbst enthält immer genau ein Kind-Element. Möchtest du mehrere Steuerelemente anzeigen, verwendest du ein Layout wie VerticalStackLayout, HorizontalStackLayout oder Grid.
Vertikales Scrollen
Standardmäßig scrollt die ScrollView vertikal.
<ScrollView>
<VerticalStackLayout>
<!-- Viele Elemente -->
</VerticalStackLayout>
</ScrollView>
Dies ist die häufigste Verwendung in mobilen Anwendungen.
Horizontales Scrollen
Für horizontale Inhalte kannst du die Eigenschaft Orientation verwenden.
<ScrollView Orientation="Horizontal">
<HorizontalStackLayout>
<Button Text="Button 1" />
<Button Text="Button 2" />
<Button Text="Button 3" />
<Button Text="Button 4" />
</HorizontalStackLayout>
</ScrollView>
Dies eignet sich beispielsweise für:
-
Bildgalerien
-
Kartenansichten
-
Horizontale Menüs
Scrollen in beide Richtungen
Soll ein Inhalt sowohl horizontal als auch vertikal scrollbar sein, kannst du die Orientation auf Both setzen.
<ScrollView Orientation="Both">
<Grid WidthRequest="1500"
HeightRequest="1500">
<!-- Großer Inhalt -->
</Grid>
</ScrollView>
Dies wird häufig für:
-
Tabellen
-
Diagramme
-
Technische Visualisierungen
verwendet.
Programmatisch scrollen
Manchmal möchtest du automatisch zu einer bestimmten Position scrollen.
Zu einer Position scrollen
await scrollView.ScrollToAsync(
0,
500,
true);
Parameter:
-
X-Position
-
Y-Position
-
Animation aktivieren
Zu einem bestimmten Element scrollen
await scrollView.ScrollToAsync(
targetLabel,
ScrollToPosition.Center,
true);
Das Element wird automatisch in den sichtbaren Bereich bewegt.
Scrollposition überwachen
Über das Event Scrolled kannst du auf Scrollbewegungen reagieren.
scrollView.Scrolled += OnScrolled;
private void OnScrolled(object sender, ScrolledEventArgs e)
{
Console.WriteLine(
$"X: {e.ScrollX}, Y: {e.ScrollY}");
}
Anwendungsfälle:
-
Sticky Header
-
Infinite Scrolling
-
Fortschrittsanzeigen
-
Dynamische Animationen
Beispiel: Lange Liste von Daten
<ScrollView>
<VerticalStackLayout Padding="20">
<Label Text="Element 1" />
<Label Text="Element 2" />
<Label Text="Element 3" />
<Label Text="Element 4" />
<Label Text="Element 5" />
<Label Text="Element 6" />
<Label Text="Element 7" />
<Label Text="Element 8" />
<Label Text="Element 9" />
<Label Text="Element 10" />
</VerticalStackLayout>
</ScrollView>
Bei wenigen bis mittleren Datenmengen funktioniert dieser Ansatz problemlos.
Wann sollte man keine ScrollView verwenden?
Ein häufiger Fehler besteht darin, große Datenlisten in einer ScrollView darzustellen.
Beispiel:
<ScrollView>
<VerticalStackLayout>
<!-- 1000 Datensätze -->
</VerticalStackLayout>
</ScrollView>
Das führt dazu, dass alle Elemente gleichzeitig erzeugt werden, was Speicher und Performance belastet.
Für große Datenmengen solltest du stattdessen eine CollectionView verwenden.
<CollectionView ItemsSource="{Binding Customers}">
<CollectionView.ItemTemplate>
<DataTemplate>
<Label Text="{Binding Name}" />
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
Die CollectionView unterstützt Virtualisierung und lädt nur die aktuell sichtbaren Elemente.
Best Practices
ScrollView für Formulare verwenden
<ScrollView>
<VerticalStackLayout>
<Entry Placeholder="Vorname" />
<Entry Placeholder="Nachname" />
<Entry Placeholder="E-Mail" />
<Button Text="Speichern" />
</VerticalStackLayout>
</ScrollView>
Besonders wichtig auf Smartphones, wenn die Bildschirmtastatur eingeblendet wird.
Keine verschachtelten ScrollViews
Vermeide Konstrukte wie:
<ScrollView>
<ScrollView>
...
</ScrollView>
</ScrollView>
Dies führt häufig zu unerwartetem Scrollverhalten.
CollectionView nicht in ScrollView einbetten
<!-- Nicht empfohlen -->
<ScrollView>
<CollectionView />
</ScrollView>
Beide Steuerelemente konkurrieren um das Scrollverhalten.
Fazit
Die ScrollView gehört zu den grundlegenden Steuerelementen in .NET MAUI und sorgt dafür, dass Inhalte unabhängig von der Bildschirmgröße zugänglich bleiben.
Die wichtigsten Punkte:
-
ScrollView macht Inhalte scrollbar.
-
Standardmäßig wird vertikal gescrollt.
-
Horizontales und bidirektionales Scrollen sind möglich.
-
Mit
ScrollToAsync()kann programmatisch gescrollt werden. -
Über das
Scrolled-Event lassen sich Scrollbewegungen überwachen. -
Für große Datenmengen sollte stattdessen eine CollectionView verwendet werden.
Wer diese Grundlagen beherrscht, kann benutzerfreundliche und responsive MAUI-Anwendungen entwickeln, die auf Smartphones, Tablets und Desktop-Geräten gleichermaßen funktionieren.