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 target))
            {
                Console.WriteLine("Plugin.Badge: Badge target cannot be null. Badge not added.");
                return;
            }

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

            if (badgeView == null)
            {
                if (placement == ToolbarPlacement.Bottom)
                {
                    // create for entire tab layout
                    badgeView = BadgeView.ForLayout(Context, target);
                }
                else
                {
                    var imageView = target.FindChildOfType <ImageView>();

                    //create badge for tab image or text
                    badgeView = BadgeView.ForView(Context, imageView?.Drawable != null
                        ? (Android.Views.View)imageView
                        : target.FindChildOfType <TextView>());
                }
            }

            BadgeViews[element] = badgeView;
            badgeView.UpdateFromElement(element);
            element.PropertyChanged -= OnTabbedPagePropertyChanged;
            element.PropertyChanged += OnTabbedPagePropertyChanged;
        }