2016-06-27 18 views
0

Ich schreibe Android App und habe eine Frage.TextView (Xamarin Android)

Ich habe 44 TextViews.

Ich muss benutzerdefinierte Schriftart auf sie anwenden.

Kann ich erklären, so etwas wie text1 ... text44

Und anwenden Schrift zu ihnen?

+0

Bitte meine Antwort als richtig markieren. Ich schätze – jzeferino

Antwort

2

Sie haben eine sehr bekannte Bibliothek, die Font auf jede Sie haben.

Es heißt Calligraphy.

Sie können in Sie, indem Sie diese int einfach tun Application:

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

Und in Ihrem Activity/BaseActivity:

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

Sie können für jede Schriftart angeben und bestimmte Schriftart, wenn Sie benötigen. Hoffe es hilft.

0

Wenn Ihr Textviews benannt sind Text1, Text2, etc, den gleichen Text dann eine fortlaufende Nummer enthalten, sollten Sie versuchen, eine for-Schleife zu tun:

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

Aber ich würde empfehlen, dass Sie fügen Sie Ihre Font-Datei in Ihre Ressourcen-Assets und wenden Sie sie mit AXML (keine Idee, wenn leicht machbar oder nicht). Beachten Sie auch, dass die Verwendung einer for-Schleife in diesem Fall eine schwere Sache für kleinere Geräte sein kann.

+0

Ich versuche es so zu tun –

+0

Typeface tf10 = Typeface.CreateFromAsset (Assets, "Font/HelveticaNeueLight.ttf"); text.Typeface = tf10; –

+0

in dieser Zeile ist der Fehler: text.Typeface = tf10; –

1

Erstellen eines benutzerdefinierten TextView und es überall verwenden:

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

     } 

    }