protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (null != ItemBackgroundDrawable)
                {
                    ItemBackgroundDrawable.Dispose();
                }
                if (null != m_Inflater)
                {
                    m_Inflater.Dispose();
                }
                if (null != m_OverflowAction)
                {
                    m_OverflowAction.Dispose();
                }
                ItemBackgroundDrawable = null;
                m_Inflater             = null;
                m_BarView        = null;
                m_LogoView       = null;
                m_BackIndicator  = null;
                m_TitleView      = null;
                m_ActionsView    = null;
                m_HomeBtn        = null;
                m_HomeLayout     = null;
                m_Progress       = null;
                m_TitleLayout    = null;
                m_Context        = null;
                m_OverflowAction = null;
            }

            base.Dispose(disposing);
        }
        private View InflateOverflowAction(ActionBarAction action)
        {
            var view = m_Inflater.Inflate(Resource.Layout.OverflowActionBar_Item, m_ActionsView, false);


            var labelView =
                view.FindViewById <ImageButton>(Resource.Id.actionbar_item);


            if (null != ItemBackgroundDrawable)
            {
                labelView.SetBackgroundDrawable(ItemBackgroundDrawable.GetConstantState().NewDrawable());
            }
            else if (ItemBackgroundDrawableRaw > 0)
            {
                labelView.SetBackgroundResource(ItemBackgroundDrawableRaw);
            }

            labelView.SetImageResource(action.GetDrawable());

            var spinner = view.FindViewById <Spinner>(Resource.Id.overflow_spinner);

            m_OverflowAction.OverflowSpinner = spinner;

            labelView.Tag = action;
            labelView.SetOnClickListener(this);
            //view.SetOnLongClickListener(this);

            m_OverflowAction.Activity = CurrentActivity;
            return(view);
        }
        /// <summary>
        /// Inflates a View with the given Action.
        /// </summary>
        /// <param name="action">the action to inflate</param>
        /// <returns>a view</returns>
        private View InflateAction(ActionBarAction action)
        {
            var view = m_Inflater.Inflate(Resource.Layout.ActionBar_Item, m_ActionsView, false);

            if (null != ItemBackgroundDrawable)
            {
                view.SetBackgroundDrawable(ItemBackgroundDrawable.GetConstantState().NewDrawable());
            }
            else if (ItemBackgroundDrawableRaw > 0)
            {
                view.SetBackgroundResource(ItemBackgroundDrawableRaw);
            }

            var labelView =
                view.FindViewById <ImageButton>(Resource.Id.actionbar_item);

            labelView.SetImageResource(action.GetDrawable());

            view.Tag = action;
            view.SetOnClickListener(this);
            view.SetOnLongClickListener(this);

            if (action.PopUpMessage > 0)
            {
                view.ContentDescription = Resources.GetString(action.PopUpMessage);
            }

            return(view);
        }
Beispiel #4
0
        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (null != ItemBackgroundDrawable)
                {
                    ItemBackgroundDrawable.Dispose();
                }
                if (null != _inflater)
                {
                    _inflater.Dispose();
                }
                if (null != _overflowLegacyBarAction)
                {
                    _overflowLegacyBarAction.Dispose();
                }
                ItemBackgroundDrawable = null;
                _inflater                = null;
                _barView                 = null;
                _logoView                = null;
                _backIndicator           = null;
                _titleView               = null;
                _actionsView             = null;
                _homeBtn                 = null;
                _homeLayout              = null;
                _progress                = null;
                _titleLayout             = null;
                _overflowLegacyBarAction = null;
            }

            base.Dispose(disposing);
        }
        /// <summary>
        /// Shows the provided logo to the left in the action bar.
        ///
        /// This is ment to be used instead of the setHomeAction and does not draw
        /// a divider to the left of the provided logo.
        /// </summary>
        /// <param name="resId">The drawable resource id</param>
        public void SetHomeLogo(int resId)
        {
            // TODO: Add possibility to add an IntentAction as well.
            m_LogoView.SetImageResource(resId);
            m_LogoView.Visibility   = ViewStates.Visible;
            m_HomeLayout.Visibility = ViewStates.Gone;

            if (null != ItemBackgroundDrawable)
            {
                m_LogoView.SetBackgroundDrawable(ItemBackgroundDrawable.GetConstantState().NewDrawable());
            }
            else if (ItemBackgroundDrawableRaw > 0)
            {
                m_LogoView.SetBackgroundResource(ItemBackgroundDrawableRaw);
            }

            ((LayoutParams)m_TitleLayout.LayoutParameters).AddRule(LayoutRules.RightOf, Resource.Id.actionbar_home_logo);
        }
        public void SetHomeAction(ActionBarAction action)
        {
            m_HomeBtn.SetOnClickListener(this);
            m_HomeBtn.Tag = action;
            m_HomeBtn.SetImageResource(action.GetDrawable());
            m_HomeLayout.Visibility = ViewStates.Visible;

            m_BackIndicator.SetBackgroundResource(Settings.UseLightIcons ? Resource.Drawable.actionbar_back_indicator : Resource.Drawable.actionbar_back_indicator_dark);

            if (null != ItemBackgroundDrawable)
            {
                m_HomeBtn.SetBackgroundDrawable(ItemBackgroundDrawable.GetConstantState().NewDrawable());
            }
            else if (ItemBackgroundDrawableRaw > 0)
            {
                m_HomeBtn.SetBackgroundResource(ItemBackgroundDrawableRaw);
            }

            ((LayoutParams)m_TitleLayout.LayoutParameters).AddRule(LayoutRules.RightOf, Resource.Id.actionbar_home_bg);
        }