Xamarin.Forms fontawesome适用于UWP,但在Android上显示正方形

时间:2017-01-22 21:42:19

标签: xaml user-interface xamarin.android xamarin.forms font-awesome

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

1 个答案:

答案 0 :(得分:2)

在Android上,使用FontAwesome有点麻烦。帖子背后的代码是关于如何以最简单的方式使用Font Awesome。一旦设置,就像使用Label一样简单。

我们使用自定义渲染器查看相关标签,确定文本字段中是否有一个字符,以及该字符的值是否为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;
        }
    }
}