void UpdateToolbarTitle(Page lastPage, AppCompatTextView titleTextView, AppCompatTextView subTitleTextView, Typeface originalFont, ColorStateList defaultColorStateList) { //Check support for CustomPage if (lastPage is CustomPage) { var cPage = lastPage as CustomPage; //Update main title formatted text UpdateFormattedTitleText(titleTextView, cPage.FormattedTitle, lastPage.Title); //Update subtitle text view UpdateToolbarSubtitle(cPage, subTitleTextView, originalFont, defaultColorStateList); } else { subTitleTextView.TextFormatted = new Java.Lang.String(""); subTitleTextView.Text = string.Empty; subTitleTextView.Visibility = ViewStates.Gone; //Update main title text UpdateTitleText(titleTextView, lastPage.Title); } //Update main title color UpdateToolbarTextColor(titleTextView, CustomNavigationPage.GetTitleColor(lastPage), defaultColorStateList); //Update main title font UpdateToolbarTextFont(titleTextView, CustomNavigationPage.GetTitleFont(lastPage), originalFont); UpdateToolbarTextFontType(titleTextView, CustomNavigationPage.GetTitleFontType(lastPage)); UpdateToolbarTextFontSize(titleTextView, CustomNavigationPage.GetTitleFontSize(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 == CustomNavigationPage.TitleFontTypeProperty.PropertyName) { UpdateToolbarTextFontType(_subTitleTextView, CustomNavigationPage.GetTitleFontType(lastPage)); } else if (e.PropertyName == CustomNavigationPage.TitleFontSizeProperty.PropertyName) { UpdateToolbarTextFontSize(_subTitleTextView, CustomNavigationPage.GetTitleFontSize(lastPage)); } 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; } else if (e.PropertyName == CustomNavigationPage.TitleFontTypeProperty.PropertyName || e.PropertyName == CustomNavigationPage.TitleFontSizeProperty.PropertyName) { SetupTextFontTypeSize(titleLabel, CustomNavigationPage.GetTitleFontType(page), CustomNavigationPage.GetTitleFontSize(page)); } }