【问题标题】:Custom font not displaying on Android with Xamarin Forms and Prism使用 Xamarin Forms 和 Prism 在 Android 上不显示自定义字体
【发布时间】:2017-07-22 03:35:25
【问题描述】:

使用 Xamarin Forms (2.3.1) 和 Prism (6.2) 开发适用于 iOS 和 Android 的应用程序,我们很难让自定义字体在 Android 上运行,但 iOS 一直很好。

我们关注the most recent documentation(即不使用自定义渲染),似乎已将其范围缩小到与 Prism 相关...

为了简化问题,我们制作了一个新的 Forms App,将 Xamarin demo 中的 Lobster-Regular.ttf 添加到 Android Assets 和 iOS Resources 并确保其属性分别为 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 App,添加字体文件,检查属性(默认正确)并在 MainPage.xaml 中插入标签 iOS 将使用自定义字体,而 Android 将只使用标准字体。

有一个known issue with custom fonts in UWP and WP apps,但这似乎不相关。

所有测试均在 iOS 模拟器和 Android 模拟器上进行。

更新 根据 Dan S. 的评论,我上传了一个项目来展示一个最小的棱镜应用程序,该应用程序具有适用于 iOS 但不适用于 Android 的自定义字体:sample project

【问题讨论】:

  • 您能否提供一个示例来说明该问题? Prism 不应该以某种方式对显示自定义字体等产生任何影响。
  • 我已经上传了一个项目来演示它,是的,我同意 Prism 不应该产生影响,但正如我所说,我试图缩小范围,并且这些步骤适用于非 Prism 应用程序和Prism 应用程序 iOS 无法正常运行 Android ¯_(ツ)_/¯

标签: xamarin xamarin.forms prism


【解决方案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 更新到最新版本)。

【讨论】:

  • 谢谢你,更新 Xamarin.Forms 确实解决了它?‍♂️
【解决方案2】:

这个问题让我发疯了,因为无论我怎么尝试,字体都会出现在我的 UWP 应用程序中,但不会出现在我的 Android 应用程序中。

不过,我找到了解决方案。愚蠢的是,如果字体文件本身被命名为“MyFont.TTF”而不是“MyFont.ttf”(注意文件扩展名的大小写不同),Android 应用程序中不会出现错误,但字体不会不出现。当我将文件扩展名的大小写更改为小写,重新构建并重新部署时,就像变魔术一样,字体出现了!

希望其他人阅读这篇文章并帮助他们克服这个愚蠢的障碍......

【讨论】:

  • 我刚刚花了一个小时处理这个问题,然后又在谷歌上搜索了一个小时,你是对的,将文件名的扩展名更改为小写就完全不同了。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2016-10-14
  • 1970-01-01
  • 1970-01-01
  • 2020-03-27
  • 2021-06-18
  • 1970-01-01
  • 1970-01-01
  • 2017-11-16
相关资源
最近更新 更多