使用Xamarin Forms(2.3.1)和Prism(6.2)为iOS和Android开发应用程序我们很难让自定义字体在Android上运行,但iOS已经很好了。
我们已关注the most recent documentation(即不使用自定义渲染),似乎已将其缩小为与棱镜有关...
为了简化问题,我们制作了一个新的Forms App,将Xamarin demo中的Lobster-Regular.ttf添加到Android资源和iOS资源,并确保其属性分别为AndroidAsset和BundleResource,然后在默认的xaml页面中加入:
<Label Text="Hello Forms with XAML">
<Label.FontFamily>
<OnPlatform x:TypeArguments="x:String">
<OnPlatform.iOS>MarkerFelt-Thin</OnPlatform.iOS>
<OnPlatform.Android>Lobster-Regular.ttf#Lobster-Regular</OnPlatform.Android>
<OnPlatform.WinPhone></OnPlatform.WinPhone>
</OnPlatform>
</Label.FontFamily>
</Label>
(那也是直接来自演示)
适用于iOS和Android。
如果我们创建一个新的Prism Unity应用程序,添加字体文件,检查属性(默认正确)并在MainPage.xaml中插入标签iOS将使用自定义字体,但Android将只使用标准字体。
有一个known issue with custom fonts in UWP and WP apps,但这似乎并不相关。
所有测试都在iOS模拟器和Android模拟器上进行。
更新 根据Dan S.的评论我已经上传了一个项目来展示一个最小的棱镜应用程序,其中包含适用于iOS但不适用于Android的自定义字体:sample project
答案 0 :(得分:1)
根据您提供的解决方案,问题似乎与您在项目中使用的Xamarin Forms版本有关。您的样本使用X.F 2.3.1.114,Xamarin的样本使用2.3.3.180。更新至少2.3.3.180可以解决样本中的问题。更新到Prism 6.3.0-pre2也有效(但只是因为它将Xamarin Forms更新到最新版本)。
答案 1 :(得分:0)
这个问题使我发疯,因为无论我尝试什么,字体都会显示在我的UWP应用程序中,而不显示在我的Android应用程序中。
但是我找到了解决方案。如此愚蠢,如果字体文件本身被命名为“ MyFont.TTF”而不是“ MyFont.ttf”(请注意文件扩展名大小写的不同),则Android应用程序中不会发生任何错误,但字体不会露面。当我将文件扩展名的大小写更改为小写,重新构建并重新部署时,就像魔术一样,字体出现了!
希望其他人阅读这篇文章,并帮助他们克服这个愚蠢的障碍...