This article guides you on how to center align tabs in .NET MAUI TabView for Windows and Mac platforms.
To customize the placement of tabs to the center of the Windows and Mac screens, set TabWidthMode to SizeToContent and adjust TabHeaderPadding dynamically based on the screen's width. Below is a code snippet demonstrating this approach.
XAML Code
<tabView:SfTabView TabWidthMode="SizeToContent">
…
<\tabView:SfTabView>
C#
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
protected override void OnAppearing()
{
base.OnAppearing();
#if WINDOWS
var window = GetParentWindow().Handler.PlatformView as MauiWinUIWindow;
if (window != null)
{
UpdateTabHeaderPadding(window.Bounds.Width);
}
#elif MACCATALYST
var macWindow = GetParentWindow().Handler.PlatformView as UIWindow;
if (macWindow != null)
{
UpdateTabHeaderPadding(macWindow.Bounds.Width);
}
#endif
}
#if WINDOWS || MACCATALYST
protected override void OnSizeAllocated(double width, double height)
{
base.OnSizeAllocated(width, height);
UpdateTabHeaderPadding(width);
}
private void UpdateTabHeaderPadding(double width)
{
double totalTabWidth = 0;
foreach (var tabItem in tabView.Items)
{
if (tabItem is Syncfusion.Maui.TabView.SfTabItem tabItemView)
{
totalTabWidth += tabItemView.Measure(double.PositiveInfinity, double.PositiveInfinity).Request.Width;
}
}
double remainingSpace = ((width - totalTabWidth));
double padding = (remainingSpace / 2) ;
tabView.TabHeaderPadding = new Thickness(padding, 0, 0, 0);
}
#endif
}
- The TabWidthMode is set to SizeToContent so that each tab's width is adjusted based on its content.
- The method
UpdateTabHeaderPadding
calculates the total width of all the tab items and dynamically adjusts the left padding of the tab headers to center them based on the screen width.
Output
Requirements to run the demo
To run the demo, refer to System Requirements for .NET MAUI
Troubleshooting:
Path too long exception
If you are facing path too long exception when building this example project, close Visual Studio and rename the repository to short and build the project.