You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Xamarin.Forms导航页标题的字号与字重(仅iOS和Android)

自定义导航页标题字号与字重的实现(iOS + Android)

没问题!既然你已经搞定了导航页标题的颜色设置,那咱们直接针对iOS和Android分别写自定义渲染器来调整字号和字重就行,下面是可以直接复用的代码和步骤:


iOS 端实现步骤

在你的iOS项目里新建一个渲染器类(比如放在Renderers文件夹下),命名为CustomNavigationPageRenderer,继承自NavigationRenderer,然后重写ViewDidAppear方法来修改标题的字体属性:

using UIKit;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;

[assembly: ExportRenderer(typeof(NavigationPage), typeof(YourAppName.iOS.Renderers.CustomNavigationPageRenderer))]
namespace YourAppName.iOS.Renderers
{
    public class CustomNavigationPageRenderer : NavigationRenderer
    {
        public override void ViewDidAppear(bool animated)
        {
            base.ViewDidAppear(animated);

            if (NavigationBar?.TopItem != null)
            {
                // 这里可以按需调整字号(18)和字重(Medium)
                var textAttributes = new UITextAttributes
                {
                    Font = UIFont.SystemFontOfSize(18, UIFontWeight.Medium),
                    // 保留你之前设置的标题颜色,不用额外修改
                    TextColor = NavigationBar.TopItem.TitleTextAttributes.TextColor
                };

                NavigationBar.TopItem.TitleTextAttributes = textAttributes;
                // 如果想让返回按钮字体风格统一,也可以加上下面这句
                NavigationBar.BackItem?.SetTitleTextAttributes(textAttributes, UIControlState.Normal);
            }
        }
    }
}

Android 端实现步骤

同样在Android项目里新建一个同名的渲染器类,继承自NavigationPageRenderer,重写OnLayout方法找到原生Toolbar的标题控件,修改字号和字重:

using Android.Content;
using Android.Widget;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;

[assembly: ExportRenderer(typeof(NavigationPage), typeof(YourAppName.Droid.Renderers.CustomNavigationPageRenderer))]
namespace YourAppName.Droid.Renderers
{
    public class CustomNavigationPageRenderer : NavigationPageRenderer
    {
        public CustomNavigationPageRenderer(Context context) : base(context)
        {
        }

        protected override void OnLayout(bool changed, int l, int t, int r, int b)
        {
            base.OnLayout(changed, l, t, r, b);

            var toolbar = FindViewById<Toolbar>(Resource.Id.toolbar);
            if (toolbar != null && toolbar.TitleTextView != null)
            {
                // 设置字号为18sp,字重用系统的sans-serif-medium(可按需调整)
                toolbar.TitleTextView.TextSize = 18;
                toolbar.TitleTextView.Typeface = Android.Graphics.Typeface.Create("sans-serif-medium", Android.Graphics.TypefaceStyle.Normal);
                // 如果想用自定义字体,把上面这句换成下面的(记得把字体文件放进Assets文件夹)
                // toolbar.TitleTextView.Typeface = Android.Graphics.Typeface.CreateFromAsset(Context.Assets, "YourCustomFont.ttf");
            }
        }
    }
}

小提示

  1. 记得把代码里的YourAppName替换成你项目的实际命名空间哦!
  2. 字号和字重都可以根据自己的需求调整:iOS的UIFontWeight还有Bold、Light等选项;Android也可以换成其他系统字体或者自定义字体。
  3. 标题颜色会自动沿用你之前设置的BarTextColor,不用额外修改~

内容的提问来源于stack exchange,提问作者Alan2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:53:55