updated the sample to Xamarin.Forms version 2.1.0.6524 and it crashes when you click the dots button, refactoring HomePage.cs so that tabs stuff is only created when the tabs indicator style is set avoids the crash.
i.e:
`public class HomePage : ContentPage
{
RelativeLayout relativeLayout;
CarouselLayout.IndicatorStyleEnum _indicatorStyle;
SwitcherPageViewModel viewModel;
public HomePage(CarouselLayout.IndicatorStyleEnum indicatorStyle)
{
_indicatorStyle = indicatorStyle;
viewModel = new SwitcherPageViewModel();
BindingContext = viewModel;
Title = _indicatorStyle.ToString();
relativeLayout = new RelativeLayout
{
HorizontalOptions = LayoutOptions.FillAndExpand,
VerticalOptions = LayoutOptions.FillAndExpand
};
var pagesCarousel = CreatePagesCarousel();
switch(pagesCarousel.IndicatorStyle)
{
case CarouselLayout.IndicatorStyleEnum.Dots:
var dots = CreatePagerIndicatorContainer();
relativeLayout.Children.Add (pagesCarousel,
Constraint.RelativeToParent ((parent) => { return parent.X; }),
Constraint.RelativeToParent ((parent) => { return parent.Y; }),
Constraint.RelativeToParent ((parent) => { return parent.Width; }),
Constraint.RelativeToParent ((parent) => { return parent.Height/2; })
);
relativeLayout.Children.Add (dots,
Constraint.Constant (0),
Constraint.RelativeToView (pagesCarousel,
(parent,sibling) => { return sibling.Height - 18; }),
Constraint.RelativeToParent (parent => parent.Width),
Constraint.Constant (18)
);
break;
case CarouselLayout.IndicatorStyleEnum.Tabs:
View _tabs;
_tabs = CreateTabs();
var tabsHeight = 50;
relativeLayout.Children.Add (_tabs,
Constraint.Constant (0),
Constraint.RelativeToParent ((parent) => { return parent.Height - tabsHeight; }),
Constraint.RelativeToParent (parent => parent.Width),
Constraint.Constant (tabsHeight)
);
relativeLayout.Children.Add (pagesCarousel,
Constraint.RelativeToParent ((parent) => { return parent.X; }),
Constraint.RelativeToParent ((parent) => { return parent.Y; }),
Constraint.RelativeToParent ((parent) => { return parent.Width; }),
Constraint.RelativeToView (_tabs, (parent, sibling) => { return parent.Height - (sibling.Height); })
);
break;
default:
relativeLayout.Children.Add (pagesCarousel,
Constraint.RelativeToParent ((parent) => { return parent.X; }),
Constraint.RelativeToParent ((parent) => { return parent.Y; }),
Constraint.RelativeToParent ((parent) => { return parent.Width; }),
Constraint.RelativeToParent ((parent) => { return parent.Height; })
);
break;
}
Content = relativeLayout;
}`