Kann ich eine benutzerdefinierte Schriftart in eine Android-Anwendung einbetten?

77

Ich möchte, dass eine App eine benutzerdefinierte Schriftart zum Rendern von Text enthält, diese lädt und dann mit Standardelementen wie StaticText verwendet. Ist das möglich?

Pentium10
quelle

Antworten:

140

Ja, Sie können, Sie können es nur nicht in XML-Layouts definieren. Sie müssen es jedes Mal dynamisch verwenden. Überprüfen Sie dieses Tutorial zum Beispiel .

Für den Fall, dass der Link tot ist, hier eine Zusammenfassung der Dinge:

  • Holen Sie sich eine Schriftart wie times.otf
  • Legen Sie es in Ihrem Asset-Ordner in einem "Schriftarten" -Ordner ab
  • Holen Sie sich eine Referenz von TextView mit so etwas:

    TextView tv = (TextView) findViewById(R.id.myCustomTVFont);
    
  • Holen Sie sich Ihre Schriftart aus dem Asset-Ordner:

    Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/times.otf");
    
  • Machen Sie Ihre TextView großartig:

    tv.setTypeface(tf);
    
Sephy
quelle
11
Hoffe, das Tutorial wird nicht eines Tages verschwinden.
Martin
Wie Martin zu Recht betonte, muss dies ein wenig bearbeitet werden, falls der Link aussterben sollte.
Sephy
Dieses Tutorial hat mir geholfen. Dies ist eine ultimative Lösung für mein Problem :)
Jay Mayu
Versuchte es auf einem API 2.1-Gerät. Hat nicht gut funktioniert. Ich denke, vielleicht war meine Schrift groß und verursachte Speicherprobleme. O.ä. Ich habe gerade etwas gefunden, das eine Lösung sein könnte: stackoverflow.com/a/5941665/129202
Jonny
1
Eine Kopie des Original-Tutorials: web.archive.org/web/20140115015420/http://…
Bob
3

Ab Android 8.0 (API-Level 26) können Sie Schriftarten in XML verwenden. Siehe die Dokumentation hier .

Matt
quelle
2

Sie können auch in diesem Thread nachsehen , um benutzerdefinierte Schriftarten für alle Ansichten in Ihrer Aktivität festzulegen.

KMU
quelle
1
Wie bei der anderen Antwort auf diese Frage wäre es sehr praktisch, wenn der wichtige Inhalt des Threads in der Frage enthalten wäre, falls der Link eines Tages stirbt.
StackExchange What The Heck