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?

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

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 .


2

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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.