Xamarin.Forms fontawesome在UWP上工作,但在Android上显示广场

问题描述:

我已经在我的Xamarin.Forms项目中添加了fontawesome,在UWP字体看起来像预期的一样,但在android上它是方形的。我已经为AndroidAsset设置了构建操作,但它不起作用。Xamarin.Forms fontawesome在UWP上工作,但在Android上显示广场

+0

你替换FontAwesome的字体时,有一个字符文本字段以及该字符的值是0xf000还是更高? –

在Android上,这是一个有点麻烦使用FontAwesome。 post后面的代码是关于如何以最简单的方式使用Font Awesome。这与使用标签设置一样简单。

我们使用自定义渲染器来查看相关标签,确定文本字段中是否有一个字符,以及该字符的值是否为0xf000或更高。如果是这样,我们用FontAwesome替换字体。

由于图标都开始在0xf000或更高,自定义渲染器将确保正确的字体使用

Reference article

[assembly: ExportRenderer(typeof(Label), typeof(AwesomeRenderer))] 

namespace Awesome.Droid 
{ 
    public class AwesomeRenderer : LabelRenderer 
    { 
     protected override void OnElementChanged(ElementChangedEventArgs<Label> e) 
     { 
      base.OnElementChanged(e); 

      var label = (TextView)Control; 

      var text = label.Text; 
      if(text.Length > 1 || text[0] < 0xf000) 
      { 
       return; 
      } 

      var font = Typeface.CreateFromAsset(Xamarin.Forms.Forms.Context.ApplicationContext.Assets, "fontawesome.ttf"); 
      label.Typeface = font; 
     } 
    } 
} 
+0

谢谢!有用!希望它不需要UWP上的渲染器。很快,我将不得不在iOS上部署它,也许你知道iOS是否也需要自定义视图渲染器? –