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.