Benutzerdefinierte fonts in Android

Ich habe bereits einige Artikel gelesen und auf Google gesucht, aber ich habe es versäumt.

Mein Problem betrifft das Schriftbild.

In Android gibt es nur 4 Attribute in "android:typeface" : Normal, Sans, Serif, Monospace.

Was muss ich tun, um “Verdana” in meiner Anwendung zu verwenden?

Bitte schlagen Sie mir eine korrekte Art vor, diese Schriftart in meiner Android-Anwendung zu verwenden.

Solutions Collecting From Web of "Benutzerdefinierte fonts in Android"

Dies ist ein einfaches Beispiel … Erstellen Sie einen Ordner im Stammverzeichnis Ihres Projekts mit dem Namen assets/fonts/ fügen Sie dann die TTF-Schriftartdatei ein (in diesem Fall Verdana.ttf). Wenn Sie dann diese Schriftart auf eine TextView anwenden TextView , gehen Sie folgendermaßen vor:

 import android.graphics.Typeface; public class FontSampler extends Activity { @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); TextView tv=(TextView)findViewById(R.id.custom); Typeface face=Typeface.createFromAsset(getAssets(), "fonts/Verdana.ttf"); tv.setTypeface(face); } } 

Dieses Beispiel stammt aus dem ComonsWare-Buch (geschrieben von Mark Murphy). Sie können das vollständige Beispiel von GitHub herunterladen .

Sie können PixlUI unter https://github.com/neopixl/PixlUI verwenden

Importieren Sie ihre .jar und verwenden Sie sie in XML

   

Gut!!
Diese Frage ist ziemlich alt, aber immer noch, wenn jemand nach der Antwort (im Jahr 2015) sucht, wie man eine benutzerdefinierte Schriftart auf alle Textansichten durch XML-Code direkt anwendet:

Erstens :
Wir müssen eine benutzerdefinierte Schriftart im Ordner “Assets” in Ihrem App-Verzeichnis hinzufügen:
.ttf oder .otf funktionieren beide im Fall von Android

Zweite:
Erstellen Sie eine class CustomTextView, die TextView wie folgt erweitert:

 public class CustomTextView extends TextView { public CustomTextView(Context context) { super(context); } public CustomTextView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public CustomTextView(Context context, AttributeSet attrs) { super(context, attrs); } @Override public void setTypeface(Typeface tf) { super.setTypeface(FontCache.getFont(getContext(),"fonts/")); } } 

Dritte:
Die FontCache-class wird in der setTypeface () -Methode von CustomTextView verwendet. Zweck ist das einfache Font-Caching mit HashMap:

 public class FontCache { private static Map fontMap = new HashMap(); public static Typeface getFont(Context context,String fontname){ if(fontMap.containsKey(fontname)){ return fontMap.get(fontname); } else{ Typeface tf = Typeface.createFromAsset(context.getAssets(),fontname); fontMap.put(fontname,tf); return tf; } } } 

Viertens: [Letzter Schritt] Alles, was wir jetzt tun, ist die Verwendung von CustomTextView direkt in unserer XML-Datei, wo immer eine benutzerdefinierte Schriftart-Textansicht benötigt wird:

 < .CustomTextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Custom Font Text" android:textSize ="18sp" android:textAppearance="?android:textAppearanceSmall" android:id="@+id/custom_txt" /> 

Entschuldigung, wenn das schon irgendwo auf SO gepostet wurde. Nur gedacht um zu teilen, wenn es jemandem hilft !!

Sie können eine einfache Bibliothek von EasyFonts von Drittanbietern verwenden, um eine Vielzahl von benutzerdefinierten fonts für Ihren TextView . Wenn Sie diese Bibliothek verwenden, sollten Sie sich keine Gedanken darüber machen müssen, ob Sie fonts in den Ordner “Assets / fonts” herunterladen und hinzufügen. Auch über die Erstellung von Schriftbildobjekten.

Diese Bibliothek bietet kein Verdana Font-Gesicht.

Stellen Sie jedoch folgende fonts bereit. Welche möchten Sie vielleicht verwenden?

  • Roboto
  • Droid Serif
  • Droidenroboter
  • Freiheit
  • Spaß Raiser
  • Android-Nation
  • Grüne Avocado
  • Anerkennung

Einfach:

 TextView myTextView = (TextView)findViewById(R.id.myTextView); myTextView.setTypeface(EasyFonts.robotoThin(this)); 

Ich bin Autor dieser Bibliothek.

Um die (benutzerdefinierte) Schriftart Ihrer App global zu ändern, casting Sie einen Blick auf Kalligraphie

Fügen Sie Kalligraphy einfach zu Ihrem grandle.build hinzu und fügen Sie Ihrem Application.onCreate() folgendes Snippet hinzu:

 CalligraphyConfig.initDefault(new CalligraphyConfig.Builder() .setDefaultFontPath("fonts/MyCustomFont.ttf") .setFontAttrId(R.attr.fontPath) .build() ); 

und in jeder Aktivität fügen Sie Folgendes hinzu:

 @Override protected void attachBaseContext(Context newBase) { super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase)); } 

Das ist alles, was Sie tun müssen, um die Schriftart global in Ihrer App zu ändern. Sehen Sie sich die Dokumentation für weitere Details an.

 // My example show you how to change fonts into a normal textView or list view create a fonts folder into your assets dir of android and copy your custom font in that .. assets/fonts/monaco.ttf // Font path String fontPath = "fonts/monaco.ttf"; // Loading Font Face Typeface tf = Typeface.createFromAsset(getAssets(), fontPath); // CASE 1 : Inside your list view holder.name = (TextView) convertView .findViewById(R.id.textView_cityName); // set name of text in each row holder.name.setText(CitiesNames.get(position)); // set the type of font you want to set holder.name.setTypeface(tf); // CASE 2 : Inside your text view TextView tx = (TextView)findViewById(R.id.textview1); tx.setTypeface(tf); //vKj 
 TextView textView = (Textview) findViewById(R.id.mytext); Typeface face=Typeface.createFromAsset(getAssets(), "fonts/Verdana.ttf"); textView.setTypeFace(face);