2016-11-28 13 views
1

タイトルには、Asset内にカスタムフォントがあるTypefaceSpanオブジェクトを使用する必要がありますが、これを実現する正しい方法を見つけることができません。 フォントのファイルは、「HelveticaNeueLTCom-BdCn.ttf」であるXamarin Android TypefaceSpan Assetsフォルダのカスタムフォント

これらは私のために動作しませんでした私の2つの試みです:誰でもいくつかのヒントやアドバイスを持っている

// 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; 

答えて

1

ほぼ1年後、私は同じ問題に直面し、私はそれを達成するこの方法を見つけました。

あなたは同じ質問をXamarinフォーラムhereに投稿しましたが、あなたの答えに書いたリンクは壊れています。しかし、私はそれが私を助けたようにあなたを助けたのはthis postだと思います。 ここに行く方法。

まず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; 
にスパンを追加するには、この CustomTypefaceSpanを使用すると、この

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); 
    } 
    } 
} 

のようなカスタムTypefaceSpanを作成

関連する問題