Xamarin.android Xamarin Android Typeface在资产文件夹中使用自定义字体

Xamarin.android Xamarin Android Typeface在资产文件夹中使用自定义字体,xamarin.android,custom-font,android-typeface,Xamarin.android,Custom Font,Android Typeface,正如标题所述,我需要使用一个TypefaceSpan对象,该对象在资产中具有自定义字体,但我找不到实现这一点的正确方法。 字体文件为“HelveticaNeueLTCom BdCn.ttf” 这是我的两次尝试,但都没有成功: // first attempt var textViewTitle = new TextView(Context); var span = new SpannableString("MyLongTitle"); span.SetSpan(new TypefaceSpan(

正如标题所述,我需要使用一个TypefaceSpan对象,该对象在资产中具有自定义字体,但我找不到实现这一点的正确方法。 字体文件为“HelveticaNeueLTCom BdCn.ttf”

这是我的两次尝试,但都没有成功:

// first attempt
var textViewTitle = new TextView(Context);
var span = new SpannableString("MyLongTitle");
span.SetSpan(new TypefaceSpan("HelveticaNeueLTCom-BdCn.ttf"), 0, 5, SpanTypes.ExclusiveExclusive);
textViewTitle.TextFormatted = span;


// second attempt
var textViewTitle = new TextView(Context);
var span = new SpannableString("MyLongTitle");
span.SetSpan(new Typeface(Typeface.CreateFromAsset(Context.Assets, "fonts/HelveticaNeueLTCom-BdCn.ttf")), 0, 5, SpanTypes.ExclusiveExclusive);
textViewTitle.TextFormatted = span;

有人给我一些提示或建议吗?

差不多一年后,我遇到了同样的问题,我找到了实现它的方法

我看到你在Xamarin论坛上发布了同样的问题,但是你在回答中写的链接断了。然而,我认为是它帮助了你,就像它帮助了我一样。 因此,接下来的路是这样的

首先像这样创建一个自定义的
字体span

using System;
using Android.OS;
using Android.Runtime;
using Android.Text.Style;
using Android.Graphics;
using Android.Text;

namespace Droid.Spans
{
  public class CustomTypefaceSpan : TypefaceSpan
  {
    private readonly Typeface _typeface;

    public CustomTypefaceSpan(Typeface typeface)
     : base(string.Empty)
    {
      _typeface = typeface;
    }
    public CustomTypefaceSpan(IntPtr javaReference, JniHandleOwnership transfer)
      : base(javaReference, transfer)
    {
    }
    public CustomTypefaceSpan(Parcel src)
     : base(src)
    {
    }
    public CustomTypefaceSpan(string family)
     : base(family)
    {
    }
    public override void UpdateDrawState(TextPaint ds)
    {
      ApplyTypeface(ds, _typeface);
    }
    public override void UpdateMeasureState(TextPaint paint)
    {
      ApplyTypeface(paint, _typeface);
    }
    private static void ApplyTypeface(Paint paint, Typeface tf)
    {
      paint.SetTypeface(tf);
    }
  }
}
然后使用此
customTypeface span
SpannableString

var spannableString = new SpannableString("Anything to write with a special font");
spannableString.SetSpan(new CustomTypefaceSpan(Typeface.CreateFromAsset(Assets, "HelveticaNeueLTCom-BdCn.ttf"), 0, 7, SpanTypes.InclusiveInclusive);
textView.TextFormatted = spannableString;