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; }