Skip to content

Instantly share code, notes, and snippets.

@chrisriesgo
Last active August 29, 2015 14:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chrisriesgo/c7b3520387c528c0b95b to your computer and use it in GitHub Desktop.
Save chrisriesgo/c7b3520387c528c0b95b to your computer and use it in GitHub Desktop.
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();
var dots = CreatePagerIndicatorContainer();
var tabs = CreateTabs();
switch(pagesCarousel.IndicatorStyle)
{
case CarouselLayout.IndicatorStyleEnum.Dots:
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:
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;
}
CarouselLayout CreatePagesCarousel ()
{
var carousel = new CarouselLayout {
HorizontalOptions = LayoutOptions.FillAndExpand,
VerticalOptions = LayoutOptions.FillAndExpand,
IndicatorStyle = _indicatorStyle,
ItemTemplate = new DataTemplate(typeof(HomeView))
};
carousel.SetBinding(CarouselLayout.ItemsSourceProperty, "Pages");
carousel.SetBinding(CarouselLayout.SelectedItemProperty, "CurrentPage", BindingMode.TwoWay);
return carousel;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment