void UpdateTitleViewLayout(Page lastPage, Android.Widget.LinearLayout titleViewLayout, AppCompatTextView titleTextView, AppCompatTextView subTitleTextView, Android.Graphics.Drawables.Drawable defaultBackground) { UpdateTitleViewLayoutAlignment(titleViewLayout, titleTextView, subTitleTextView, CustomNavigationPage.GetTitlePosition(lastPage)); if (!string.IsNullOrEmpty(CustomNavigationPage.GetTitleBackground(lastPage))) { UpdateTitleViewLayoutBackground(titleViewLayout, CustomNavigationPage.GetTitleBackground(lastPage), defaultBackground); } else { _titleViewLayout?.SetBackground(CreateShape(ShapeType.Rectangle, (int)CustomNavigationPage.GetTitleBorderWidth(lastPage), (int)CustomNavigationPage.GetTitleBorderCornerRadius(lastPage), CustomNavigationPage.GetTitleFillColor(lastPage), CustomNavigationPage.GetTitleBorderColor(lastPage))); } UpdateTitleViewLayoutMargin(titleViewLayout, CustomNavigationPage.GetTitleMargin(lastPage)); UpdateTitleViewLayoutPadding(titleViewLayout, CustomNavigationPage.GetTitlePadding(lastPage)); }
private void LastPage_PropertyChanged(object sender, PropertyChangedEventArgs e) { var lastPage = sender as Page; if (e.PropertyName == CustomNavigationPage.HasShadowProperty.PropertyName) { UpdateToolbarShadow(_toolbar, CustomNavigationPage.GetHasShadow(lastPage), Context as Activity, _originalWindowContent); } else if (e.PropertyName == CustomNavigationPage.TitleBackgroundProperty.PropertyName) { UpdateTitleViewLayoutBackground(_titleViewLayout, CustomNavigationPage.GetTitleBackground(lastPage), _originalDrawable); } else if (e.PropertyName == CustomNavigationPage.BarBackgroundProperty.PropertyName) { UpdateToolbarBackground(_toolbar, lastPage, Context as Activity, _originalToolbarBackground); } else if (e.PropertyName == CustomNavigationPage.GradientColorsProperty.PropertyName) { UpdateToolbarBackground(_toolbar, lastPage, Context as Activity, _originalToolbarBackground); } else if (e.PropertyName == CustomNavigationPage.GradientDirectionProperty.PropertyName) { UpdateToolbarBackground(_toolbar, lastPage, Context as Activity, _originalToolbarBackground); } else if (e.PropertyName == CustomNavigationPage.BarBackgroundOpacityProperty.PropertyName) { UpdateToolbarBackground(_toolbar, lastPage, Context as Activity, _originalToolbarBackground); } else if (e.PropertyName == CustomNavigationPage.TitleBorderCornerRadiusProperty.PropertyName) { _titleViewLayout?.SetBackground(CreateShape(ShapeType.Rectangle, (int)CustomNavigationPage.GetTitleBorderWidth(lastPage), (int)CustomNavigationPage.GetTitleBorderCornerRadius(lastPage), CustomNavigationPage.GetTitleFillColor(lastPage), CustomNavigationPage.GetTitleBorderColor(lastPage))); } else if (e.PropertyName == CustomNavigationPage.TitleBorderWidthProperty.PropertyName) { _titleViewLayout?.SetBackground(CreateShape(ShapeType.Rectangle, (int)CustomNavigationPage.GetTitleBorderWidth(lastPage), (int)CustomNavigationPage.GetTitleBorderCornerRadius(lastPage), CustomNavigationPage.GetTitleFillColor(lastPage), CustomNavigationPage.GetTitleBorderColor(lastPage))); } else if (e.PropertyName == CustomNavigationPage.TitleBorderColorProperty.PropertyName) { _titleViewLayout?.SetBackground(CreateShape(ShapeType.Rectangle, (int)CustomNavigationPage.GetTitleBorderWidth(lastPage), (int)CustomNavigationPage.GetTitleBorderCornerRadius(lastPage), CustomNavigationPage.GetTitleFillColor(lastPage), CustomNavigationPage.GetTitleBorderColor(lastPage))); } else if (e.PropertyName == CustomNavigationPage.TitleFillColorProperty.PropertyName) { _titleViewLayout?.SetBackground(CreateShape(ShapeType.Rectangle, (int)CustomNavigationPage.GetTitleBorderWidth(lastPage), (int)CustomNavigationPage.GetTitleBorderCornerRadius(lastPage), CustomNavigationPage.GetTitleFillColor(lastPage), CustomNavigationPage.GetTitleBorderColor(lastPage))); } else if (e.PropertyName == CustomNavigationPage.TitlePositionProperty.PropertyName) { UpdateTitleViewLayoutAlignment(_titleViewLayout, _titleTextView, _subTitleTextView, CustomNavigationPage.GetTitlePosition(lastPage)); //UpdateTitleViewLayout(lastPage, _titleViewLayout, _titleTextView, _subTitleTextView, _originalDrawable); } else if (e.PropertyName == CustomNavigationPage.TitlePaddingProperty.PropertyName) { UpdateTitleViewLayoutPadding(_titleViewLayout, CustomNavigationPage.GetTitlePadding(lastPage)); } else if (e.PropertyName == CustomNavigationPage.TitleMarginProperty.PropertyName) { UpdateTitleViewLayoutMargin(_titleViewLayout, CustomNavigationPage.GetTitleMargin(lastPage)); } else if (e.PropertyName == CustomNavigationPage.TitleColorProperty.PropertyName) { UpdateToolbarTextColor(_titleTextView, CustomNavigationPage.GetTitleColor(lastPage), _originalColorStateList); } else if (e.PropertyName == CustomNavigationPage.TitleFontProperty.PropertyName) { UpdateToolbarTextFont(_titleTextView, CustomNavigationPage.GetTitleFont(lastPage), _originalFont); } else if (e.PropertyName == Page.TitleProperty.PropertyName) { UpdateTitleText(_titleTextView, lastPage.Title); } else if (e.PropertyName == CustomPage.FormattedTitleProperty.PropertyName && (lastPage is CustomPage)) { var cPage = lastPage as CustomPage; UpdateFormattedTitleText(_titleTextView, cPage.FormattedTitle, cPage.Title); } else if (e.PropertyName == CustomNavigationPage.SubtitleColorProperty.PropertyName) { UpdateToolbarTextColor(_subTitleTextView, CustomNavigationPage.GetSubtitleColor(lastPage), _originalColorStateList); } else if (e.PropertyName == CustomNavigationPage.SubtitleFontProperty.PropertyName) { UpdateToolbarTextFont(_subTitleTextView, CustomNavigationPage.GetSubtitleFont(lastPage), _originalFont); } else if (e.PropertyName == CustomPage.SubtitleProperty.PropertyName && (lastPage is CustomPage)) { var cPage = lastPage as CustomPage; if (!string.IsNullOrEmpty(cPage.Subtitle)) { _subTitleTextView.Text = cPage.Subtitle; _subTitleTextView.Visibility = ViewStates.Visible; } else { ClearTextView(_subTitleTextView, true); } } else if (e.PropertyName == CustomPage.FormattedTitleProperty.PropertyName && (lastPage is CustomPage)) { var cPage = lastPage as CustomPage; if (cPage.FormattedSubtitle != null && cPage.FormattedSubtitle.Spans.Count > 0) { _subTitleTextView.TextFormatted = cPage.FormattedSubtitle.ToAttributed(Font.Default, Xamarin.Forms.Color.Default, _subTitleTextView); _subTitleTextView.Visibility = ViewStates.Visible; } else { ClearTextView(_subTitleTextView, true); } } }
private void Element_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { var page = sender as Page; System.Diagnostics.Debug.WriteLine(e.PropertyName); if (e.PropertyName == Page.TitleProperty.PropertyName || e.PropertyName == CustomNavigationPage.TitleFontProperty.PropertyName || e.PropertyName == CustomPage.SubtitleProperty.PropertyName || e.PropertyName == CustomNavigationPage.SubtitleFontProperty.PropertyName) { SetupTextFont(titleLabel, CustomNavigationPage.GetTitleFont(page), CustomNavigationPage.GetTitleColor(page)); SetTitlePosition(CustomNavigationPage.GetTitlePosition(page), CustomNavigationPage.GetTitlePadding(Element), CustomNavigationPage.GetTitleMargin(Element), new CGRect(0, 0, Math.Max(subtitleLabel.IntrinsicContentSize.Width, titleLabel.IntrinsicContentSize.Width), (titleLabel.IntrinsicContentSize.Height + subtitleLabel.IntrinsicContentSize.Height + (subtitleLabel.IntrinsicContentSize.Height > 0.0f ? 3.0f : 0.0f)))); } else if (e.PropertyName == CustomNavigationPage.TitleColorProperty.PropertyName) { var color = CustomNavigationPage.GetTitleColor(page); if (color != null) { titleLabel.TextColor = color?.ToUIColor(); } } else if (e.PropertyName == CustomNavigationPage.SubtitleColorProperty.PropertyName) { var color = CustomNavigationPage.GetSubtitleColor(page); if (color != null) { subtitleLabel.TextColor = color?.ToUIColor(); } } else if (e.PropertyName == CustomNavigationPage.TitlePositionProperty.PropertyName || e.PropertyName == CustomNavigationPage.TitlePaddingProperty.PropertyName || e.PropertyName == CustomNavigationPage.TitleMarginProperty.PropertyName) { SetTitlePosition(CustomNavigationPage.GetTitlePosition(Element), CustomNavigationPage.GetTitlePadding(Element), CustomNavigationPage.GetTitleMargin(Element), new CGRect(0, 0, Math.Max(subtitleLabel.IntrinsicContentSize.Width, titleLabel.IntrinsicContentSize.Width), (titleLabel.IntrinsicContentSize.Height + subtitleLabel.IntrinsicContentSize.Height + (subtitleLabel.IntrinsicContentSize.Height > 0.0f ? 3.0f : 0.0f)))); } else if (e.PropertyName == CustomNavigationPage.GradientColorsProperty.PropertyName || e.PropertyName == CustomNavigationPage.GradientDirectionProperty.PropertyName || e.PropertyName == CustomNavigationPage.BarBackgroundProperty.PropertyName || e.PropertyName == CustomNavigationPage.BarBackgroundOpacityProperty.PropertyName) { SetupBackground(); } else if (e.PropertyName == CustomNavigationPage.HasShadowProperty.PropertyName) { SetupShadow(CustomNavigationPage.GetHasShadow(page)); } else if (e.PropertyName == CustomPage.FormattedTitleProperty.PropertyName && (page is CustomPage)) { var cPage = page as CustomPage; SetupFormattedText(titleLabel, cPage.FormattedTitle, cPage.Title); } else if (e.PropertyName == CustomNavigationPage.TitleBackgroundProperty.PropertyName) { if (!string.IsNullOrEmpty(CustomNavigationPage.GetTitleBackground(Element))) { titleView.BackgroundColor = UIColor.FromPatternImage(UIImage.FromBundle(CustomNavigationPage.GetTitleBackground(Element))); } else { titleView.BackgroundColor = null; } } else if (e.PropertyName == CustomNavigationPage.TitleBorderWidthProperty.PropertyName) { titleView.Layer.BorderWidth = CustomNavigationPage.GetTitleBorderWidth(Element); } else if (e.PropertyName == CustomNavigationPage.TitleBorderCornerRadiusProperty.PropertyName) { titleView.Layer.CornerRadius = CustomNavigationPage.GetTitleBorderCornerRadius(Element); } else if (e.PropertyName == CustomNavigationPage.TitleBorderColorProperty.PropertyName) { titleView.Layer.BorderColor = CustomNavigationPage.GetTitleBorderColor(Element)?.ToCGColor() ?? UIColor.Clear.CGColor; } else if (e.PropertyName == CustomNavigationPage.TitleFillColorProperty.PropertyName) { titleView.BackgroundColor = CustomNavigationPage.GetTitleFillColor(Element)?.ToUIColor() ?? UIColor.Clear; } }
public override void ViewDidLayoutSubviews() { base.ViewDidLayoutSubviews(); if (lastNavBarWidth != NavigationController?.NavigationBar?.Bounds.Size.Width || lastNavBarHeight != NavigationController?.NavigationBar?.Bounds.Size.Height) { lastNavBarHeight = NavigationController?.NavigationBar?.Bounds.Size.Height ?? 0.0f; lastNavBarWidth = NavigationController?.NavigationBar?.Bounds.Size.Width ?? 0.0f; SetupNavBar(new CGSize(lastNavBarWidth, lastNavBarHeight)); } SetTitlePosition(CustomNavigationPage.GetTitlePosition(Element), CustomNavigationPage.GetTitlePadding(Element), CustomNavigationPage.GetTitleMargin(Element), new CGRect(0, 0, Math.Max(subtitleLabel.IntrinsicContentSize.Width, titleLabel.IntrinsicContentSize.Width), (titleLabel.IntrinsicContentSize.Height + subtitleLabel.IntrinsicContentSize.Height + (subtitleLabel.IntrinsicContentSize.Height > 0.0f ? 3.0f : 0.0f)))); System.Diagnostics.Debug.WriteLine("didSubViews"); }
public override void ViewWillAppear(bool animated) { base.ViewWillAppear(animated); SetupNavBar(NavigationController.NavigationBar.Bounds.Size); SetTitlePosition(CustomNavigationPage.GetTitlePosition(Element), CustomNavigationPage.GetTitlePadding(Element), CustomNavigationPage.GetTitleMargin(Element), new CGRect(0, 0, Math.Max(subtitleLabel.IntrinsicContentSize.Width, titleLabel.IntrinsicContentSize.Width), (titleLabel.IntrinsicContentSize.Height + subtitleLabel.IntrinsicContentSize.Height + (subtitleLabel.IntrinsicContentSize.Height > 0.0f ? 3.0f : 0.0f)))); //System.Diagnostics.Debug.WriteLine("Preparing"); }
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) { base.OnElementPropertyChanged(sender, e); var lastPage = Element.CurrentPage; if (e.PropertyName == CustomNavigationPage.HasShadowProperty.PropertyName) { UpdateToolbarShadow(_toolbar, CustomNavigationPage.GetHasShadow(lastPage), Context as Activity, _originalWindowContent); } else if (e.PropertyName == CustomNavigationPage.TitleBackgroundProperty.PropertyName) { UpdateTitleViewLayoutBackground(_titleViewLayout, CustomNavigationPage.GetTitleBackground(lastPage), _originalDrawable); } else if (e.PropertyName == CustomNavigationPage.BarBackgroundProperty.PropertyName) { UpdateToolbarBackground(_toolbar, lastPage, Context as Activity, _originalToolbarBackground); } else if (e.PropertyName == CustomNavigationPage.GradientColorsProperty.PropertyName) { UpdateToolbarBackground(_toolbar, lastPage, Context as Activity, _originalToolbarBackground); } else if (e.PropertyName == CustomNavigationPage.GradientDirectionProperty.PropertyName) { UpdateToolbarBackground(_toolbar, lastPage, Context as Activity, _originalToolbarBackground); } else if (e.PropertyName == CustomNavigationPage.BarBackgroundOpacityProperty.PropertyName) { UpdateToolbarBackground(_toolbar, lastPage, Context as Activity, _originalToolbarBackground); } else if (e.PropertyName == CustomNavigationPage.TitleBorderCornerRadiusProperty.PropertyName) { _titleViewLayout?.SetBackground(CreateShape(ShapeType.Rectangle, (int)CustomNavigationPage.GetTitleBorderWidth(lastPage), (int)CustomNavigationPage.GetTitleBorderCornerRadius(lastPage), CustomNavigationPage.GetTitleFillColor(lastPage), CustomNavigationPage.GetTitleBorderColor(lastPage))); } else if (e.PropertyName == CustomNavigationPage.TitleBorderWidthProperty.PropertyName) { _titleViewLayout?.SetBackground(CreateShape(ShapeType.Rectangle, (int)CustomNavigationPage.GetTitleBorderWidth(lastPage), (int)CustomNavigationPage.GetTitleBorderCornerRadius(lastPage), CustomNavigationPage.GetTitleFillColor(lastPage), CustomNavigationPage.GetTitleBorderColor(lastPage))); } else if (e.PropertyName == CustomNavigationPage.TitleBorderColorProperty.PropertyName) { _titleViewLayout?.SetBackground(CreateShape(ShapeType.Rectangle, (int)CustomNavigationPage.GetTitleBorderWidth(lastPage), (int)CustomNavigationPage.GetTitleBorderCornerRadius(lastPage), CustomNavigationPage.GetTitleFillColor(lastPage), CustomNavigationPage.GetTitleBorderColor(lastPage))); } else if (e.PropertyName == CustomNavigationPage.TitleFillColorProperty.PropertyName) { _titleViewLayout?.SetBackground(CreateShape(ShapeType.Rectangle, (int)CustomNavigationPage.GetTitleBorderWidth(lastPage), (int)CustomNavigationPage.GetTitleBorderCornerRadius(lastPage), CustomNavigationPage.GetTitleFillColor(lastPage), CustomNavigationPage.GetTitleBorderColor(lastPage))); } else if (e.PropertyName == CustomNavigationPage.TitlePositionProperty.PropertyName) { UpdateTitleViewLayoutAlignment(_titleViewLayout, _titleTextView, _subTitleTextView, CustomNavigationPage.GetTitlePosition(lastPage)); } else if (e.PropertyName == CustomNavigationPage.TitlePaddingProperty.PropertyName) { UpdateTitleViewLayoutPadding(_titleViewLayout, CustomNavigationPage.GetTitlePadding(lastPage)); } else if (e.PropertyName == CustomNavigationPage.TitleMarginProperty.PropertyName) { UpdateTitleViewLayoutMargin(_titleViewLayout, CustomNavigationPage.GetTitleMargin(lastPage)); } else if (e.PropertyName == CustomNavigationPage.TitleColorProperty.PropertyName) { UpdateToolbarTextColor(_titleTextView, CustomNavigationPage.GetTitleColor(lastPage), _originalColorStateList); } else if (e.PropertyName == CustomNavigationPage.TitleFontProperty.PropertyName) { UpdateToolbarTextFont(_titleTextView, CustomNavigationPage.GetTitleFont(lastPage), _originalFont); } else if (e.PropertyName == Page.TitleProperty.PropertyName) { UpdateTitleText(_titleTextView, lastPage.Title); } else if (e.PropertyName == CustomNavigationPage.SubtitleColorProperty.PropertyName) { UpdateToolbarTextColor(_subTitleTextView, CustomNavigationPage.GetSubtitleColor(lastPage), _originalColorStateList); } else if (e.PropertyName == CustomNavigationPage.SubtitleFontProperty.PropertyName) { UpdateToolbarTextFont(_subTitleTextView, CustomNavigationPage.GetSubtitleFont(lastPage), _originalFont); } }