如何在Xamarin ActionBar标题中设置自定义字体族?
我来帮你捋捋这个自定义字体的问题——之前我也碰到过类似的坑,照着文章思路在style.xml配置但没生效,大概率是某个细节没做到位,咱们一步步排查解决:
1. 先确认字体文件的放置是否正确
- 把你的自定义字体文件(比如
MyCustomFont.ttf)放到Android项目的Assets文件夹下,一定要右键文件→属性,把生成操作改成AndroidAsset,这步很容易忘! - 字体文件名尽量用小写字母,别加空格或特殊字符,避免系统识别出错。
2. 正确配置style.xml的样式
打开Android项目的Resources/values/style.xml(如果用了深色主题,还要同步检查values-night目录下的对应文件),按下面的格式修改:
首先定义标题文字的样式,再关联到ActionBar的样式里:
<!-- 自定义ActionBar整体样式 --> <style name="MyCustomActionBarStyle" parent="@style/Widget.AppCompat.ActionBar"> <!-- 关联标题文字样式,兼容新旧Android版本 --> <item name="android:titleTextStyle">@style/MyActionBarTitleText</item> <item name="titleTextStyle">@style/MyActionBarTitleText</item> </style> <!-- 自定义标题文字的字体样式 --> <style name="MyActionBarTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"> <!-- Android 8.0+ 推荐用@font方式,需要把字体放到Resources/font文件夹(没有就新建),生成操作设为Font --> <item name="android:fontFamily">@font/mycustomfont</item> <!-- 旧版本Android用fontPath方式,对应Assets里的文件名 --> <item name="fontPath">MyCustomFont.ttf</item> <!-- 可以顺便调整字号等样式 --> <item name="android:textSize">18sp</item> </style>
然后在你的App主题里引用这个自定义ActionBar样式:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="android:actionBarStyle">@style/MyCustomActionBarStyle</item> <item name="actionBarStyle">@style/MyCustomActionBarStyle</item> </style>
3. 如果用了Xamarin.Forms Shell,额外加一步配置
要是你的项目用了Shell导航,默认的NavigationBar样式不太吃style.xml的配置,得在AppShell.xaml里自定义TitleView:
<Shell.TitleView> <Label Text="你的页面标题" FontFamily="MyCustomFont.ttf#MyCustomFont" FontSize="Large" TextColor="White"/> </Label>
这里的FontFamily格式是文件名#字体内部名称——字体内部名称可以在Windows上打开ttf文件,查看字体属性里的“字体名称”,别直接用文件名哦!
4. 几个常见的排查小技巧
- 核对字体名称:很多ttf文件的内部名称和文件名不一样,比如文件名是
myfont.ttf,但内部叫My Custom Font,这时候要写成myfont.ttf#My Custom Font - 清理重建项目:有时候缓存会导致修改不生效,先清理解决方案,再重新生成整个项目
- 检查Android版本:如果是API 26及以上,优先用
@font/的方式,把字体放到Resources/font文件夹里
内容的提问来源于stack exchange,提问作者Jakubee
相关产品推荐
相关产品推荐

