2016-06-27 18 views
0

私はAndroidアプリを書いており、1つの質問があります。TextView(Xamarin Android)

私は44 TextViewsです。

カスタムフォントを適用する必要があります。

私はテキスト1のようなもの... text44

を宣言し、それらにフォントを適用することはできますか?

+0

を正しいと私の答えをマークしてください。私はこのようなことをしようとしています – jzeferino

答えて

2

あなたはあなたが持っているTextviewにFontを適用する非常に知られているライブラリを持っています。

Calligraphyと呼ばれています。

あなたがint単にあなたApplicationでこれを行うことによって行うことができます。

CalligraphyConfig.InitDefault(new CalligraphyConfig.Builder() 
      .SetDefaultFontPath("fonts/your_font.ttf") 
      .SetFontAttrId(Resource.Attribute.fontPath) 
      .Build()); 

そして、あなたのActivity/BaseActivity中:あなたがする必要がある場合

protected override void AttachBaseContext(Android.Content.Context @base) 
{ 
    base.AttachBaseContext (CalligraphyContextWrapper.Wrap(@base)); 
} 

あなたはすべてのフォントのフォントを指定して、特定することができます。 お手伝いをしてください。

0

あなたTextViewsは、その後、同じテキストインクリメント番号を含む、テキスト1、テキスト2、などと命名されている場合は、forループを実行しようとする場合がありますが:

for(int i = 0; i <= 44; i++) { 
    TextView text = FindViewById<TextView> (Resources.GetIdentifier ("text" + i, null, PackageName)); 
    //Apply your font to text. 
} 

しかし、私はあなたを追加することをお勧めしますあなたのリソース資産のフォントファイルを作成し、AXMLを使用して適用します(容易に実行可能かどうかは考えられません)。また、この場合にforループを使用すると、より小さいデバイスでは重くなることに注意してください。

+0

私はこのようにしようとしています –

+0

タイプフェイスtf10 = Typeface.CreateFromAsset(Assets、 "Font/HelveticaNeueLight.ttf"); text.Typeface = tf10;この行の –

+0

はエラーです: text.Typeface = tf10; –

1

カスタムTextViewを作成し、どこでもそれを使用する:

[Register ("com.myproject.TextViewForeign")] 
    public class TextViewForeign:TextView 
    { 
     public TextViewForeign (Context context) : base (context) 
     { 
      setTypeFace(); 
     } 

     public TextViewForeign (Context context, IAttributeSet attrs) : base (context, attrs) 
     { 
      setTypeFace(); 
     } 

     public TextViewForeign (Context context, IAttributeSet attrs, int defStyle) : base (context, attrs, defStyle) 
     { 
      setTypeFace(); 
     } 

     public TextViewForeign (IntPtr javaReference, JniHandleOwnership transfer) 
      : base (javaReference, transfer) 
     { 
      setTypeFace(); 
     } 

     private void setTypeFace() 
     { 
      Android.Graphics.Typeface tf = global::Android.Graphics.Typeface.CreateFromAsset (Context.Assets, "fonts/bpg_arial.ttf"); 
      this.SetTypeface (tf, Android.Graphics.TypefaceStyle.Normal); 

     } 

    }