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); }
public ActionBar(Context context, IAttributeSet attrs) : base(context, attrs) { m_Context = context; m_Inflater = (LayoutInflater)context.GetSystemService(Context.LayoutInflaterService); m_BarView = (RelativeLayout)m_Inflater.Inflate(Resource.Layout.ActionBar, null); AddView(m_BarView); m_LogoView = m_BarView.FindViewById<ImageView>(Resource.Id.actionbar_home_logo); m_HomeLayout = m_BarView.FindViewById<RelativeLayout>(Resource.Id.actionbar_home_bg); m_HomeBtn = m_BarView.FindViewById<ImageButton>(Resource.Id.actionbar_home_btn); m_BackIndicator = m_BarView.FindViewById(Resource.Id.actionbar_home_is_back); m_TitleView = m_BarView.FindViewById<TextView>(Resource.Id.actionbar_title); m_ActionsView = m_BarView.FindViewById<LinearLayout>(Resource.Id.actionbar_actions); m_Progress = m_BarView.FindViewById<ProgressBar>(Resource.Id.actionbar_progress); m_TitleLayout = m_BarView.FindViewById<RelativeLayout>(Resource.Id.actionbar_title_layout); //check if pre-honeycomb. Ideally here you would actually want to check if a menu button exists. //however on all pre-honeycomb phones they basically did. var currentapiVersion = (int)Build.VERSION.SdkInt; m_HasMenuButton = currentapiVersion <= 10; m_OverflowAction = new OverflowActionBarAction(context); //Custom Attributes (defined in Attrs.xml) var a = context.ObtainStyledAttributes(attrs, Resource.Styleable.ActionBar); var title = a.GetString(Resource.Styleable.ActionBar_title); if (null != title) Title = title; var titleColor = a.GetColor(Resource.Styleable.ActionBar_title_color, Resources.GetColor(Resource.Color.actionbar_title)); TitleColor = titleColor; var separatorColor = a.GetColor(Resource.Styleable.ActionBar_separator, Resources.GetColor(Resource.Color.actionbar_separator)); m_ActionsView.SetBackgroundColor(separatorColor); using (var background = a.GetDrawable(Resource.Styleable.ActionBar_background)) //recycling the drawable immediately { if (null != background) BackgroundDrawable = background; } var backgroundItem = a.GetDrawable(Resource.Styleable.ActionBar_background_item); if (null != backgroundItem) ItemBackgroundDrawable = backgroundItem; a.Recycle(); }
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); }
public ActionBar(Context context, IAttributeSet attrs) : base(context, attrs) { m_Context = context; m_Inflater = (LayoutInflater)context.GetSystemService(Context.LayoutInflaterService); m_BarView = (RelativeLayout)m_Inflater.Inflate(Resource.Layout.ActionBar, null); AddView(m_BarView); m_LogoView = m_BarView.FindViewById <ImageView>(Resource.Id.actionbar_home_logo); m_HomeLayout = m_BarView.FindViewById <RelativeLayout>(Resource.Id.actionbar_home_bg); m_HomeBtn = m_BarView.FindViewById <ImageButton>(Resource.Id.actionbar_home_btn); m_BackIndicator = m_BarView.FindViewById(Resource.Id.actionbar_home_is_back); m_TitleView = m_BarView.FindViewById <TextView>(Resource.Id.actionbar_title); m_ActionsView = m_BarView.FindViewById <LinearLayout>(Resource.Id.actionbar_actions); m_Progress = m_BarView.FindViewById <ProgressBar>(Resource.Id.actionbar_progress); m_TitleLayout = m_BarView.FindViewById <RelativeLayout>(Resource.Id.actionbar_title_layout); //check if pre-honeycomb. Ideally here you would actually want to check if a menu button exists. //however on all pre-honeycomb phones they basically did. var currentapiVersion = (int)Build.VERSION.SdkInt; m_HasMenuButton = currentapiVersion <= 10; m_OverflowAction = new OverflowActionBarAction(context); //Custom Attributes (defined in Attrs.xml) var a = context.ObtainStyledAttributes(attrs, Resource.Styleable.ActionBar); var title = a.GetString(Resource.Styleable.ActionBar_title); if (null != title) { Title = title; } var titleColor = a.GetColor(Resource.Styleable.ActionBar_title_color, Resources.GetColor(Resource.Color.actionbar_title)); TitleColor = titleColor; var separatorColor = a.GetColor(Resource.Styleable.ActionBar_separator, Resources.GetColor(Resource.Color.actionbar_separator)); m_ActionsView.SetBackgroundColor(separatorColor); using (var background = a.GetDrawable(Resource.Styleable.ActionBar_background)) //recycling the drawable immediately { if (null != background) { BackgroundDrawable = background; } } var backgroundItem = a.GetDrawable(Resource.Styleable.ActionBar_background_item); if (null != backgroundItem) { ItemBackgroundDrawable = backgroundItem; } a.Recycle(); }