Example #1
0
        /// <summary>
        /// Used to set badge for given tab
        /// </summary>
        /// <param name="badgeItem">           holds badge data </param>
        /// <param name="bottomNavigationTab"> bottom navigation tab to which badge needs to be attached </param>
        private static void setBadgeForTab(BadgeItem badgeItem, BottomNavigationTab bottomNavigationTab)
        {
            if (badgeItem != null)
            {
                Context context = bottomNavigationTab.Context;

                GradientDrawable shape = getBadgeDrawable(badgeItem, context);
                bottomNavigationTab.badgeView.SetBackgroundDrawable(shape);

                bottomNavigationTab.BadgeItem = badgeItem;
                badgeItem.SetTextView(bottomNavigationTab.badgeView);
                bottomNavigationTab.badgeView.Visibility = ViewStates.Visible;

                bottomNavigationTab.badgeView.SetTextColor(new Color(badgeItem.GetTextColor(context)));
                bottomNavigationTab.badgeView.Text = badgeItem.Text;


                FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams)bottomNavigationTab.badgeView.LayoutParameters;
                layoutParams.Gravity = badgeItem.Gravity;
                bottomNavigationTab.badgeView.LayoutParameters = layoutParams;

                if (badgeItem.Hidden)
                {
                    // if hide is called before the initialisation of bottom-bar this will handle that
                    // by hiding it.
                    badgeItem.Hide();
                }
            }
        }
Example #2
0
        /// <summary>
        /// Internal Method to select a tab
        /// </summary>
        /// <param name="newPosition">     to select a tab after bottom navigation bar is initialised </param>
        /// <param name="firstTab">        if firstTab the no ripple animation will be done </param>
        /// <param name="callListener">    is listener callbacks enabled for this change </param>
        /// <param name="forcedSelection"> if bottom navigation bar forced to select tab (in this case call on selected irrespective of previous state </param>
        private void selectTabInternal(int newPosition, bool firstTab, bool callListener, bool forcedSelection)
        {
            int oldPosition = mSelectedPosition;

            if (mSelectedPosition != newPosition)
            {
                if (mBackgroundStyle == BackgroundStyle.BACKGROUND_STYLE_STATIC)
                {
                    if (mSelectedPosition != -1)
                    {
                        mBottomNavigationTabs[mSelectedPosition].unSelect(true, mAnimationDuration);
                    }
                    mBottomNavigationTabs[newPosition].Select(true, mAnimationDuration);
                }
                else if (mBackgroundStyle == BackgroundStyle.BACKGROUND_STYLE_RIPPLE)
                {
                    if (mSelectedPosition != -1)
                    {
                        mBottomNavigationTabs[mSelectedPosition].unSelect(false, mAnimationDuration);
                    }
                    mBottomNavigationTabs[newPosition].Select(false, mAnimationDuration);

//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final BottomNavigationTab clickedView = mBottomNavigationTabs.get(newPosition);
                    BottomNavigationTab clickedView = mBottomNavigationTabs[newPosition];
                    if (firstTab)
                    {
                        // Running a ripple on the opening app won't be good so on firstTab this won't run.
                        mContainer.SetBackgroundColor(new Color(clickedView.ActiveColor));
                        mBackgroundOverlay.Visibility = ViewStates.Gone;
                    }
                    else
                    {
                        mBackgroundOverlay.Post(() =>
                        {
//                            try {
                            BottomNavigationHelper.setBackgroundWithRipple(clickedView, mContainer, mBackgroundOverlay, clickedView.ActiveColor, mRippleAnimationDuration);
//                            } catch (Exception e) {
//                                mContainer.setBackgroundColor(clickedView.getActiveColor());
//                                mBackgroundOverlay.setVisibility(ViewStates.Gone);
//                            }
                        });
                    }
                }
                mSelectedPosition = newPosition;
            }

            ThreadPool.QueueUserWorkItem(o => {
                if (callListener)
                {
                    sendListenerCall(oldPosition, newPosition, forcedSelection);
                }
            });
        }
Example #3
0
        ///////////////////////////////////////////////////////////////////////////
        // Internal Methods of the class
        ///////////////////////////////////////////////////////////////////////////

        /// <summary>
        /// Internal method to setup tabs
        /// </summary>
        /// <param name="bottomNavigationTab"> Tab item </param>
        /// <param name="currentItem">         data structure for tab item </param>
        /// <param name="itemWidth">           tab item in-active width </param>
        /// <param name="itemActiveWidth">     tab item active width </param>
        private void setUpTab(BottomNavigationTab bottomNavigationTab, BottomNavigationItem currentItem, int itemWidth, int itemActiveWidth)
        {
            bottomNavigationTab.InactiveWidth = itemWidth;
            bottomNavigationTab.ActiveWidth   = itemActiveWidth;
            bottomNavigationTab.Position      = mBottomNavigationItems.IndexOf(currentItem);

            bottomNavigationTab.SetOnClickListener(new OnClickListenerAnonymousInnerClass(this));

            mBottomNavigationTabs.Add(bottomNavigationTab);

            BottomNavigationHelper.bindTabWithData(currentItem, bottomNavigationTab, this);

            bottomNavigationTab.initialise(mBackgroundStyle == BackgroundStyle.BACKGROUND_STYLE_STATIC);

            mTabContainer.AddView(bottomNavigationTab);
        }
Example #4
0
            public void OnClick(View v)
            {
                BottomNavigationTab bottomNavigationTabView = (BottomNavigationTab)v;

                outerInstance.selectTabInternal(bottomNavigationTabView.Position, false, true, false);
            }
Example #5
0
        /// <summary>
        /// Used to get set data to the Tab views from navigation items
        /// </summary>
        /// <param name="bottomNavigationItem"> holds all the data </param>
        /// <param name="bottomNavigationTab">  view to which data need to be set </param>
        /// <param name="bottomNavigationBar">  view which holds all the tabs </param>
        public static void bindTabWithData(BottomNavigationItem bottomNavigationItem, BottomNavigationTab bottomNavigationTab, BottomNavigationBar bottomNavigationBar)
        {
            Context context = bottomNavigationBar.Context;

            bottomNavigationTab.Label = bottomNavigationItem.getTitle(context);
            bottomNavigationTab.Icon  = bottomNavigationItem.getIcon(context);

            int activeColor   = bottomNavigationItem.getActiveColor(context);
            int inActiveColor = bottomNavigationItem.getInActiveColor(context);

            if (activeColor != -1)
            {
                bottomNavigationTab.ActiveColor = activeColor;
            }
            else
            {
                bottomNavigationTab.ActiveColor = bottomNavigationBar.ActiveColor;
            }

            if (inActiveColor != -1)
            {
                bottomNavigationTab.InactiveColor = inActiveColor;
            }
            else
            {
                bottomNavigationTab.InactiveColor = bottomNavigationBar.InActiveColor;
            }

            if (bottomNavigationItem.InActiveIconAvailable)
            {
                Drawable inactiveDrawable = bottomNavigationItem.getInactiveIcon(context);
                if (inactiveDrawable != null)
                {
                    bottomNavigationTab.InactiveIcon = inactiveDrawable;
                }
            }

            bottomNavigationTab.ItemBackgroundColor = bottomNavigationBar.BackgroundColor;

            setBadgeForTab(bottomNavigationItem.BadgeItem, bottomNavigationTab);
        }
Example #6
0
 public AnimatorUpdateListenerAnonymousInnerClass2(BottomNavigationTab outerInstance)
 {
     this.outerInstance = outerInstance;
 }