Ich habe eine benutzerdefinierte Schriftart auf a angewendet TextView
, aber sie scheint die Schriftart nicht zu ändern.
Hier ist mein Code:
Typeface myTypeface = Typeface.createFromAsset(getAssets(), "fonts/myFont.ttf");
TextView myTextView = (TextView)findViewById(R.id.myTextView);
myTextView.setTypeface(myTypeface);
Kann mich bitte jemand aus diesem Problem herausholen?
android
custom-font
android-fonts
android-typeface
KLAPPERSCHLANGE
quelle
quelle
myTextView.setTypeface(myTypeface);
Antworten:
Auf Mobiletuts + gibt es ein sehr gutes Tutorial zur Textformatierung für Android. Kurztipp: Passen Sie Android-Schriftarten an
EDIT: Habe es jetzt selbst getestet. Hier ist die Lösung. Sie können einen Unterordner namens fonts verwenden, der sich jedoch im
assets
Ordner und nicht imres
Ordner befinden muss. SoStellen Sie außerdem sicher, dass das Ende der Schriftart, dh das Ende der Schriftartdatei, in Kleinbuchstaben geschrieben ist. Mit anderen Worten sollte es nicht sein,
myFont.TTF
abermyfont.ttf
dieser Weg muss in Kleinbuchstaben seinquelle
createFromAsset
assets
Nachdem ich die meisten der in diesem Thread beschriebenen Lösungen ausprobiert hatte, fand ich versehentlich Calligraphy ( https://github.com/chrisjenx/Calligraphy ) - eine Bibliothek von Christopher Jenkins, mit der Sie Ihrer App ganz einfach benutzerdefinierte Schriftarten hinzufügen können. Die Vorteile seiner Bibliothek im Vergleich zu den hier vorgeschlagenen Ansätzen sind:
quelle
Ich weiß, dass es bereits gute Antworten gibt, aber hier ist eine voll funktionsfähige Implementierung.
Hier ist die benutzerdefinierte Textansicht:
Hier sind die benutzerdefinierten Attribute. Dies sollte in Ihre
res/attrs.xml
Datei gehen:Und so verwenden Sie es. Ich werde ein relatives Layout verwenden, um es zu verpacken und die
customAttr
Deklaration anzuzeigen, aber es könnte natürlich jedes Layout sein, das Sie bereits haben.quelle
customAttrs
sich mein Projekt?xmlns:customAttrs="http://schemas.android.com/apk/res-auto"
. Dadurch werden automatisch die Attribute für benutzerdefinierte Ansichten festgelegt. In diesem Fall haben Sie ein Attribut namens customFont in attrs.xml definiert. Ein einfacheres Verständnis besteht darin, zu prüfen,xmlns:android="http://schemas.android.com/apk/res/android"
welches den Namespace für Ihre Android-Attribute definiert. Wenn Sie das also ändern würden, wäre esa
stattdessenandroid:text
soa:text
.Ich habe das schon einmal erfolgreich benutzt. Der einzige Unterschied zwischen unseren Implementierungen besteht darin, dass ich keinen Unterordner in Assets verwendet habe. Ich bin mir jedoch nicht sicher, ob dies etwas ändern wird.
quelle
Vorausgesetzt, Sie haben die Schriftart an der richtigen Stelle platziert und es liegt kein Fehler in der Schriftartdatei selbst vor, sollte Ihr Code so funktionieren, RATTLESNAKE.
Es wäre jedoch viel einfacher, wenn Sie einfach eine Schriftart in Ihrer Layout-XML definieren könnten, wie folgt:
Mit der Begleitung
res/values/styles.xml
:Ich habe einige Tools speziell für diesen Zweck erstellt. Beziehen Sie sich auf dieses Projekt von GitHub oder werfen Sie einen Blick auf diesen Blog-Beitrag, der das Ganze erklärt.
quelle
Der beste Weg, dies zu tun Ab Android O Preview Release ist folgender:
Es funktioniert nur, wenn Sie Android Studio-2.4 oder höher haben
Fenster Neues Ressourcenverzeichnis wird angezeigt.
R.font.dancing_script
,R.font.la_la
undR.font.ba_ba
.Als nächstes müssen wir eine Schriftfamilie erstellen:
Fügen Sie jede Schriftartdatei, jeden Stil und jedes Gewichtsattribut in das Schriftart-Tag-Element ein. Das folgende XML veranschaulicht das Hinzufügen von font-bezogenen Attributen in der XML-Schriftartressource:
Hinzufügen von Schriftarten zu einer Textansicht:
Wie aus der Dokumentation
Alle Schritte sind korrekt.
quelle
Für benutzerdefinierte Schriftarten in Android erstellen Sie einen Ordner innerhalb des Assets-Ordnernamens. "Schriftarten" platzieren Sie die gewünschte fonts.ttf- oder .otf-Datei darin.
Wenn Sie UIBaseFragment erweitern:
sonst wenn erweitert Aktivität:
quelle
Sie können PixlUI unter https://github.com/neopixl/PixlUI verwenden
Importieren Sie ihre .jar und verwenden Sie sie in XML
quelle
Da ich mit allen auf SO vorgestellten Lösungen nicht zufrieden war, habe ich mir meine ausgedacht. Es basiert auf einem kleinen Trick mit Tags (dh Sie können keine Tags in Ihrem Code verwenden). Ich habe den Schriftpfad dort eingefügt. Wenn Sie Ansichten definieren, können Sie Folgendes tun:
oder dieses:
Jetzt können Sie entweder explizit auf die Ansicht zugreifen oder sie einrichten als:
oder einfach alles einrichten über:
Und was ist der Zauberkurs, den du fragst? Meistens von anderen SO-Posts geklebt, mit Hilfsmethoden für Aktivität und Fragmente:
quelle
Leider gibt es dafür keine gute Lösung.
Ich habe die vielen Artikel über die Verwendung einer benutzerdefinierten Textansicht gesehen, aber was sie vergessen, ist, dass nicht nur Textansichten Schriftarten implementieren können und dass Textansichten in anderen Ansichten versteckt sind, auf die der Entwickler nicht zugreifen kann. Ich werde nicht einmal mit Spannable anfangen .
Sie können ein externes Schriftart-Dienstprogramm wie das folgende verwenden:
Kalligraphie-Schriftwerkzeug
ABER dies durchläuft jede Ansicht in der Anwendung bei ihrer Erstellung und selbst dieses Dienstprogramm vermisst einige Ansichten (ViewPager rendert normale Schriftarten). Wenn Google seine Build-Tools aktualisiert, stürzt dies gelegentlich ab, da veraltete Eigenschaften als Ziel ausgewählt werden müssen. Es ist auch etwas langsam, da es Javas Reflection verwendet .
Es liegt wirklich an Google, dies zu beheben. Wir brauchen eine bessere Unterstützung für Schriftarten in Android. Wenn Sie sich die Lösung von iOS ansehen, sind buchstäblich Hunderte von Schriftarten zur Auswahl. Möchten Sie eine benutzerdefinierte Schriftart? Geben Sie einfach einen TFF ein und es ist verwendbar.
Im Moment beschränkten wir uns nun auf das Angebot, das Google uns anbietet, das extrem begrenzt, aber glücklicherweise für Mobilgeräte optimiert ist.
quelle
Stellen Sie sicher, dass Sie den obigen Code nach Ihrem Aufruf von super und dem Aufruf von setContentView () in onCreate () einfügen. Dieses kleine Detail hielt mich eine Weile auf.
quelle
Mit Android 8.0 wurde die Verwendung von benutzerdefinierten Schriftarten in der Anwendung einfach
downloadable fonts
. Wir können Schriftarten direktres/font/ folder
im Projektordner hinzufügen. Auf diese Weise werden die Schriftarten automatisch in Android Studio verfügbar.Setzen Sie nun das
fontFamily
Attribut auf die Liste der Schriftarten oder klicken Sie auf mehr und wählen Sie die Schriftart Ihrer Wahl aus. Dadurch wird Ihrer Textansicht einetools:fontFamily="@font/your_font_file"
Zeile hinzugefügt.Dadurch werden automatisch einige Dateien generiert.
1. Im Werteordner wird erstellt
fonts_certs.xml
.2. In Manifest werden folgende Zeilen hinzugefügt:
3.
preloaded_fonts.xml
quelle
Sie können die einfache EasyFonts- Bibliothek von Drittanbietern verwenden, um verschiedene benutzerdefinierte Schriftarten für Ihre Bibliothek festzulegen
TextView
. Wenn Sie diese Bibliothek verwenden, müssen Sie sich nicht um das Herunterladen und Hinzufügen von Schriftarten zum Ordner "Assets / Fonts" kümmern. Auch über die Erstellung von Schriftobjekten.Anstatt
Einfach:
Diese Bibliothek bietet auch die folgende Schriftart.
quelle
Ich hatte das gleiche Problem, der TTF wurde nicht angezeigt. Ich habe die Schriftartdatei geändert und mit demselben Code funktioniert es.
quelle
Wenn Sie die Schriftart aus dem Netzwerk laden oder einfach formatieren möchten, können Sie Folgendes verwenden:
https://github.com/shellum/fontView
Beispiel:
quelle
Nun, nach sieben Jahren können Sie die gesamte App
textView
oder das, was Sie wollen, einfach mit denandroid.support
Bibliotheken 26 ++ ändern .Z.B:
Erstellen Sie Ihre Schriftpaket- App / src / res / font und verschieben Sie Ihre Schriftart hinein.
Und in Ihrem App-Thema fügen Sie es einfach als fontFamily hinzu:
Beispiel zur Verwendung
textView
nur mit:Und fügen Sie Ihrem Hauptthema hinzu:
Derzeit wird an 8.1 bis 4.1 API Jelly Bean gearbeitet. Und das ist eine breite Palette.
quelle
Antwort aktualisieren: Android 8.0 (API-Level 26) führt eine neue Funktion ein, Schriftarten in XML. Verwenden Sie einfach die Funktion "Schriftarten in XML" auf Geräten mit Android 4.1 (API-Stufe 16) und höher. Verwenden Sie die Support-Bibliothek 26.
siehe diesen Link
Alte Antwort
Es gibt zwei Möglichkeiten, Schriftarten anzupassen:
Weg 1: Refrection Typeface.class ||| bester Weg
Rufen Sie FontsOverride.setDefaultFont () in der Klasse Extend Application auf. Dieser Code bewirkt, dass alle Software-Schriftarten geändert werden, auch Toasts-Schriftarten
AppController.java
FontsOverride.java
Weg 2: Verwenden Sie setTypeface
Für eine spezielle Ansicht rufen Sie einfach setTypeface () auf, um die Schriftart zu ändern.
CTextView.java
FontUtils.java
quelle
Die korrekte Vorgehensweise ab API 26 ist in der offiziellen Dokumentation hier beschrieben:
https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html
Dazu müssen die ttf-Dateien im Ordner res / font abgelegt und eine Schriftfamiliendatei erstellt werden.
quelle
Die einfachste Lösung, die Android jetzt unterstützt!
Verwenden Sie eine benutzerdefinierte Schriftart in XML:
Details sehen:
https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html
quelle
TextView txt = (TextView) findViewById(R.id.txt_act_spalsh_welcome); Typeface font = Typeface.createFromAsset(getAssets(), "fonts/Aramis Italic.ttf"); txt.setTypeface(font);
Der Name der Schriftart muss korrekt sein und Spaß haben
quelle
Ja, herunterladbare Schriftarten sind so einfach, wie Dipali sagte.
Das ist wie man es macht...
TextView
.fontFamily
Wählen Sie im Eigenschaftenbereich die Dropdown-Liste aus. Wenn es nicht vorhanden ist, suchen Sie das Caret-Ding (das> und klicken Sie darauf, um es zu erweiterntextAppearance
) unter.font-family
Dropdown-Liste.more fonts
Google Fonts
Add font to project
BONUS: Wenn Sie ALLES mit Text in Ihrer Anwendung mit der ausgewählten Schriftart formatieren möchten, fügen
<item name="android:fontfamily">@font/fontnamehere</item>
Sie einfach Ihre hinzustyles.xml
quelle