One of the hardest parts of apps to customize is the tab bar. To overcome this, we’ve added the TabView
to the Xamarin Community Toolkit. With the TabView
you have full control over the look-and-feel of the tab bar. In this blogpost we’ll learn what it’s all about.
Xamarin.Forms TabbedPage
The way to implement a tab bar in Xamarin.Forms is by using a TabbedPage. This works great and maps to the native equivalents on all platforms supported, but that is just the thing: it uses the native look and feel. Over the years we’ve surfaced more APIs that allow you to style the tab bar more, but the native platforms kept limiting us. There was a big ask for having a bit action button floating on that tab bar or being able to scroll through tabs, have animations, and more!
To be able to provide you with all the above, and more, there is now… TabView
!
TabView: All You’ve Ever Wanted from a Tab Bar
By creating a tab bar from all Xamarin.Forms elements a whole new world opens. We’re able to bind items to tabs, scroll through them (both the pages as the actual tabs!), have animations, badges, and most of all… We can implement that big, floating, rounded action button. The TabView
is available in the Xamarin Community Toolkit, today! But before you go off and install it right away, let me show you a couple of the cool things it can do.
Basic Usage
Basic usage of the TabView
looks like below. You can already see so many options that are not available on the default tab bar. Placement top or bottom, background color, specify a height, enable an indicator and give it a color. It’s crazy.
If we look a little bit closer, we see that we have a TabView at the root and inside of the you’ll need to use TabViewItem
. Those items even have more properties to customize. But more importantly; inside of these items you will specify the content. So, in practice, the TabViewItem
s will act as your actual tabs.
<Grid>
<xct:TabView
TabStripPlacement="Bottom"
TabStripBackgroundColor="Blue"
TabStripHeight="60"
TabIndicatorColor="Yellow"
TabContentBackgroundColor="Yellow">
<xct:TabViewItem
Icon="triangle.png"
Text="Tab 1"
TextColor="White"
TextColorSelected="Yellow"
FontSize="12">
<Grid
BackgroundColor="Gray">
<Label
HorizontalOptions="Center"
VerticalOptions="Center"
Text="TabContent1" />
</Grid>
</xct:TabViewItem>
<xct:TabViewItem
Icon="circle.png"
Text="Tab 2"
TextColor="White"
TextColorSelected="Yellow"
FontSize="12">
<Grid>
<Label
HorizontalOptions="Center"
VerticalOptions="Center"
Text="TabContent2" />
</Grid>
</xct:TabViewItem>
</xct:TabView>
</Grid>
When running the above code, it will show up like in the screenshot below.
See this full sample code in context (or run it!) in the Xamarin Community Toolkit sample app.
TabView With Action Button
I’ve already mentioned it: the floating action button that looks so fancy in all those designs. You can see an example in the screenshot below.
To achieve this, we can use the following code. This is again taken from an example in the Xamarin Community Toolkit sample app. The code has been adapted to show just the crucial things here.
<xct:TabView
TabStripPlacement="Bottom"
TabStripBackgroundColor="Blue"
TabStripHeight="60"
TabIndicatorColor="Yellow"
TabContentBackgroundColor="Yellow">
<!-- First TabViewItem -->
<xct:TabViewItem
Text="Tab 2"
Icon="circle.png"
ControlTemplate="{StaticResource FabTabItemTemplate}"
Style="{StaticResource TabItemStyle}"
TabTapped="OnFabTabTapped" />
<!-- Third TabViewItem -->
</xct:TabView>
The thing you might notice about this code is that the middle action button is just another TabViewItem
. But by not assigning any content and instead assigning an event to the TabTapped
property, you suddenly gain a button instead of another tab. Another thing that stands out is that you can use a ControlTemplate
to style the TabViewItem
any way you want. I’ll admit that the tabs shown in this post might need a bit more styling…
What About Lazy Loading?
That is a question we hear a lot, and with good reason! Lazy loading is not built into the TabView directly, however, also in the Xamarin Community Toolkit, we have the LazyView. With LazyView you can make any view lazy loading, including the ones used in TabView. LazyView isn’t out in stable yet at the time of writing this blog but will be part of version 1.1 and available in the nightly pre-release versions.
And Much, Much More…
I wish I could go over all the great stuff that is in the TabView
, but where’s the fun in that? I invite you to go give it a try yourself and let us know. If you want to learn more, make sure to go check out the Docs page, the sample app that we have for the Xamarin Community Toolkit or the video down below where I talk with Javier about all the things that you can do with this.
I can’t wait to see what beautiful designs you can produce!
See it in Action!
If you want to see the TabView in action, right now, check out the video of the Xamarin Show below. In this episode I have Javier as my guest who shows everything that is possible.
The post Beautiful Tabs with Xamarin Community Toolkit TabView appeared first on Xamarin Blog.