Ejemplo n.º 1
0
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            if (this.pagerPage == null)
            {
                this.pagerPage = new ViewPagerPage() { FragmentManager = this.FragmentManager };
                this.visualRoot.Child = pagerPage;
            }

            // this will start Navigation to first tab
            this.ActionBar.NavigationMode = ActionBarNavigationMode.Tabs;

            var styledAttributes = this.Theme.ObtainStyledAttributes(new int[] { Android.Resource.Attribute.ActionBarSize, Android.Resource.Attribute.ActionBarStyle });
            var mActionBarSize = (int)styledAttributes.GetDimension(0, 0);
            var actionbarStyleId = styledAttributes.GetResourceId(1, 0);
            styledAttributes.Recycle();

            styledAttributes = this.Theme.ObtainStyledAttributes(actionbarStyleId, new int[] { Android.Resource.Attribute.BackgroundStacked });
            var tabsBackground = styledAttributes.GetDrawable(0);
            styledAttributes.Recycle();

            rootLayout = new RootLayout(this);

            this.rootLayout.SetBackgroundDrawable(tabsBackground);

            rootLayout.SetPadding(0, mActionBarSize, 0, 0);
            this.Window.DecorView.RootView.ViewTreeObserver.AddOnGlobalLayoutListener(this);

            frameLayout = new FrameLayout(this);
            frameLayout.Id = this.fragmentPageFrameLayoutResourceId;
            frameLayout.Visibility = ViewStates.Gone;
            rootLayout.SizeChanged += (s, e) => UpdateRootLayouts();
            this.pagerPage.ViewPager.LayoutChange += ViewPagerLayotChange;

            this.pagerPage.ViewPager.PageSelected += Pager_PageSelected;

            rootLayout.AddView(this.pagerPage.ViewPager, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FillParent, ViewGroup.LayoutParams.FillParent));
            rootLayout.AddView(frameLayout, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FillParent, ViewGroup.LayoutParams.FillParent));

            this.SetContentView(rootLayout, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FillParent, ViewGroup.LayoutParams.FillParent));
        }
Ejemplo n.º 2
0
        private void Tabs_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
        {
            switch (e.Action)
            {
                case System.Collections.Specialized.NotifyCollectionChangedAction.Add:
                    var tab = e.NewItems[0] as TabBarTab;
                    var androidTab = ActionBar.NewTab();

                    if (!string.IsNullOrEmpty(tab.Title))
                    {
                        androidTab.SetText("  " + tab.Title);
                    }
                    if (tab.Icon != null)
                    {

                        if (tab.Icon.ImageLoadStatus == Media.ImageStatus.Loaded)
                        {
                            androidTab.SetIcon(new BitmapDrawable(tab.Icon.GetBitmap()));
                        }
                        else
                        {
                            tab.Icon.ImageOpened += (s, ea) => androidTab.SetIcon(new BitmapDrawable(tab.Icon.GetBitmap()));
                        }
                    }

                    androidTab.TabSelected += TabSelected;
                    this.ActionBar.AddTab(androidTab, e.NewStartingIndex);
                    if (this.pagerPage == null)
                    {
                        this.pagerPage = new ViewPagerPage() { FragmentManager = this.FragmentManager };
                        this.visualRoot.Child = pagerPage;
                    }
                    var page = this.InstantiatePage(tab.PageType);
                    page.NavigationService = this.navigationService;
                    this.pagerPage.AddPage(page, tab.NavigationParameter);
                    break;
                case System.Collections.Specialized.NotifyCollectionChangedAction.Remove:
                    break;
                case System.Collections.Specialized.NotifyCollectionChangedAction.Replace:
                    break;
                default:
                    throw new InvalidEnumArgumentException();
            }
        }