自定义字体不显示在Android上的Xamarin表单和棱镜

rbpvctlc  于 2022-12-16  发布在  Android
关注(0)|答案(3)|浏览(171)

用Xamarin Forms(2.3.1)和Prism(6.2)开发iOS和Android应用程序时,我们很难让自定义字体在Android上工作,但iOS一直很好。
我们已经遵循了最新的文档(iidoEe.不使用自定义渲染),似乎已经将其缩小到与Prism相关...
为了简化问题,我们创建了一个新的表单应用,将Lobster-Regular.ttf从Xamarin demo添加到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>

(That也是直接来自演示)
它适用于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

eqqqjvef

eqqqjvef1#

根据您提供的解决方案,问题似乎与您在项目中使用的Xamarin Forms版本有关。您的示例使用X.F 2.3.1.114,Xamarin示例使用2.3.3.180。更新到至少2.3.3.180可以解决示例中的问题。更新到Prism 6.3.0-pre 2也可以工作(但只是因为它将Xamarin Forms更新到了最新版本)。

rqdpfwrv

rqdpfwrv2#

这个问题让我抓狂,因为无论我尝试什么,字体都会显示在我的UWP应用程序中,但不会显示在我的Android应用程序中。
不过我找到了解决方案。尽管这很愚蠢,但如果字体文件本身命名为“MyFont. ttf”而不是“MyFont.ttf”(注意文件扩展名大小写的差异),Android应用程序不会出现错误,但字体不会显示。当我将文件扩展名改为小写,重建并重新部署时,就像变魔术一样,字体显示了!
希望其他人读了这篇文章,它可以帮助他们克服这个愚蠢的障碍...

vfh0ocws

vfh0ocws3#

我也犯了这个错误,我所做的只是。
.ttf文件的属性中,在编译操作中我设置为嵌入式资源,它对我有效。
顺便说一句,为可能的拼写错误道歉。我英语说得不太好...

相关问题