如何修改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"); } } } }
小提示
- 记得把代码里的
YourAppName替换成你项目的实际命名空间哦! - 字号和字重都可以根据自己的需求调整:iOS的
UIFontWeight还有Bold、Light等选项;Android也可以换成其他系统字体或者自定义字体。 - 标题颜色会自动沿用你之前设置的
BarTextColor,不用额外修改~
内容的提问来源于stack exchange,提问作者Alan2
相关产品推荐
相关产品推荐

