Xamarin.android Xamarin Android Typeface在资产文件夹中使用自定义字体
正如标题所述,我需要使用一个TypefaceSpan对象,该对象在资产中具有自定义字体,但我找不到实现这一点的正确方法。 字体文件为“HelveticaNeueLTCom BdCn.ttf” 这是我的两次尝试,但都没有成功: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(
// 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;