private void AddTabBadge(int tabIndex)
        {
            if (!(_tabLinearLayout.GetChildAt(tabIndex) is ViewGroup view) || tabIndex >= Element.Children.Count)
            {
                return;
            }

            var page = Element.GetChildPageWithBadge(tabIndex);

            var badgeView = view.FindChildOfType <BadgeView>();

            if (badgeView == null)
            {
                var badgeTarget = view.FindChildOfType <TextView>();
                if (badgeTarget == null)
                {
                    Console.WriteLine("Plugin.Badge: No Text view found to attach badge");
                    return;
                }

                //create badge for tab
                badgeView = BadgeView.ForTarget(Context, badgeTarget);
            }

            BadgeViews[page] = badgeView;

            badgeView.UpdateFromElement(page);

            page.PropertyChanged += OnTabbedPagePropertyChanged;
        }
        private void AddTabBadge(int tabIndex)
        {
            var element = Element.Children[tabIndex];

            if (element is NavigationPage navigationPage)
            {
                //if the child page is a navigation page get its root page
                element = navigationPage.RootPage;
            }

            var placement  = Element.OnThisPlatform().GetToolbarPlacement();
            var targetView = placement == ToolbarPlacement.Bottom ? _bottomTabStrip?.GetChildAt(tabIndex) : _topTabLayout?.GetTabAt(tabIndex).CustomView ?? _topTabStrip?.GetChildAt(tabIndex);

            if (!(targetView is ViewGroup targetLayout))
            {
                Console.WriteLine("Plugin.Badge: Badge target cannot be null. Badge not added.");
                return;
            }

            var badgeView = targetLayout.FindChildOfType <BadgeView>();

            if (badgeView == null)
            {
                var imageView = targetLayout.FindChildOfType <ImageView>();
                if (placement == ToolbarPlacement.Bottom)
                {
                    // create for entire tab layout
                    badgeView = BadgeView.ForTargetLayout(Context, imageView);
                }
                else
                {
                    //create badge for tab image or text
                    badgeView = BadgeView.ForTarget(Context, imageView?.Drawable != null
                        ? (Android.Views.View)imageView
                        : targetLayout.FindChildOfType <TextView>());
                }
            }

            BadgeViews[element] = badgeView;
            badgeView.UpdateFromElement(element);

            element.PropertyChanged -= OnTabbedPagePropertyChanged;
            element.PropertyChanged += OnTabbedPagePropertyChanged;
        }