diff options
Diffstat (limited to 'Xamarin.Forms.Platform.Android/AppCompat/TabbedPageRenderer.cs')
-rw-r--r-- | Xamarin.Forms.Platform.Android/AppCompat/TabbedPageRenderer.cs | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/Xamarin.Forms.Platform.Android/AppCompat/TabbedPageRenderer.cs b/Xamarin.Forms.Platform.Android/AppCompat/TabbedPageRenderer.cs index 4bd54906..243e5c14 100644 --- a/Xamarin.Forms.Platform.Android/AppCompat/TabbedPageRenderer.cs +++ b/Xamarin.Forms.Platform.Android/AppCompat/TabbedPageRenderer.cs @@ -44,6 +44,8 @@ namespace Xamarin.Forms.Platform.Android.AppCompat } } + IPageController PageController => Element as IPageController; + void IManageFragments.SetFragmentManager(FragmentManager childFragmentManager) { if (_fragmentManager == null) @@ -114,7 +116,7 @@ namespace Xamarin.Forms.Platform.Android.AppCompat } if (Element != null) - Element.InternalChildren.CollectionChanged -= OnChildrenCollectionChanged; + PageController.InternalChildren.CollectionChanged -= OnChildrenCollectionChanged; } base.Dispose(disposing); @@ -123,13 +125,13 @@ namespace Xamarin.Forms.Platform.Android.AppCompat protected override void OnAttachedToWindow() { base.OnAttachedToWindow(); - Element.SendAppearing(); + PageController.SendAppearing(); } protected override void OnDetachedFromWindow() { base.OnDetachedFromWindow(); - Element.SendDisappearing(); + PageController.SendDisappearing(); } protected override void OnElementChanged(ElementChangedEventArgs<TabbedPage> e) @@ -139,7 +141,7 @@ namespace Xamarin.Forms.Platform.Android.AppCompat var activity = (FormsAppCompatActivity)Context; if (e.OldElement != null) - e.OldElement.InternalChildren.CollectionChanged -= OnChildrenCollectionChanged; + ((IPageController)e.OldElement).InternalChildren.CollectionChanged -= OnChildrenCollectionChanged; if (e.NewElement != null) { @@ -177,7 +179,7 @@ namespace Xamarin.Forms.Platform.Android.AppCompat ScrollToCurrentPage(); UpdateIgnoreContainerAreas(); - tabbedPage.InternalChildren.CollectionChanged += OnChildrenCollectionChanged; + ((IPageController)tabbedPage).InternalChildren.CollectionChanged += OnChildrenCollectionChanged; UpdateBarBackgroundColor(); UpdateBarTextColor(); } @@ -216,11 +218,11 @@ namespace Xamarin.Forms.Platform.Android.AppCompat if (width > 0 && height > 0) { - Element.ContainerArea = new Rectangle(0, context.FromPixels(tabsHeight), context.FromPixels(width), context.FromPixels(height - tabsHeight)); + PageController.ContainerArea = new Rectangle(0, context.FromPixels(tabsHeight), context.FromPixels(width), context.FromPixels(height - tabsHeight)); - for (var i = 0; i < Element.InternalChildren.Count; i++) + for (var i = 0; i < PageController.InternalChildren.Count; i++) { - var child = Element.InternalChildren[i] as VisualElement; + var child = PageController.InternalChildren[i] as VisualElement; if (child == null) continue; IVisualElementRenderer renderer = Android.Platform.GetRenderer(child); @@ -267,7 +269,7 @@ namespace Xamarin.Forms.Platform.Android.AppCompat void UpdateIgnoreContainerAreas() { - foreach (Page child in Element.Children) + foreach (IPageController child in Element.Children) child.IgnoresContainerArea = child is NavigationPage; } @@ -275,16 +277,16 @@ namespace Xamarin.Forms.Platform.Android.AppCompat { TabLayout tabs = _tabLayout; - if (position >= Element.InternalChildren.Count) + if (position >= PageController.InternalChildren.Count) return; - var leftPage = (Page)Element.InternalChildren[position]; + var leftPage = (Page)PageController.InternalChildren[position]; IVisualElementRenderer leftRenderer = Android.Platform.GetRenderer(leftPage); if (leftRenderer == null) return; - if (offset <= 0 || position >= Element.InternalChildren.Count - 1) + if (offset <= 0 || position >= PageController.InternalChildren.Count - 1) { var leftNavRenderer = leftRenderer as NavigationPageRenderer; if (leftNavRenderer != null) @@ -294,7 +296,7 @@ namespace Xamarin.Forms.Platform.Android.AppCompat } else { - var rightPage = (Page)Element.InternalChildren[position + 1]; + var rightPage = (Page)PageController.InternalChildren[position + 1]; IVisualElementRenderer rightRenderer = Android.Platform.GetRenderer(rightPage); var leftHeight = 0; |