Erstens ist die Standardeinstellung nicht Arial. Der Standardwert ist Droid Sans.
Zweitens, um zu einer anderen integrierten Schriftart zu wechseln, verwenden Sie android:typefacein Layout-XML oder setTypeface()in Java.
Drittens gibt es in Android keine Helvetica-Schriftart. Die integrierten Optionen sind Droid Sans ( sans), Droid Sans Mono ( monospace) und Droid Serif ( serif). Während Sie Ihre eigenen Schriftarten mit Ihrer Anwendung bündeln und über verwenden können setTypeface(), sollten Sie berücksichtigen, dass die Schriftdateien groß sind und in einigen Fällen Lizenzvereinbarungen erfordern (z. B. Helvetica, eine Linotype-Schriftart ).
BEARBEITEN
Die Android-Designsprache basiert auf traditionellen typografischen Tools wie Skalierung, Raum, Rhythmus und Ausrichtung auf ein zugrunde liegendes Raster. Die erfolgreiche Bereitstellung dieser Tools ist wichtig, damit Benutzer einen Informationsbildschirm schnell verstehen können. Um diese Verwendung von Typografie zu unterstützen, führte Ice Cream Sandwich eine neue Typenfamilie namens Roboto ein, die speziell für die Anforderungen der Benutzeroberfläche und hochauflösender Bildschirme entwickelt wurde.
Das aktuelle TextView-Framework bietet Roboto in dünnen, leichten, regelmäßigen und fetten Gewichten sowie einen kursiven Stil für jedes Gewicht. Das Framework bietet auch die Roboto Condensed-Variante in regulären und fetten Gewichten sowie einen kursiven Stil für jedes Gewicht.
Nach ICS enthält Android den Roboto-Schriftstil. Lesen Sie mehr Roboto
BEARBEITEN 2
Mit der Einführung der Support Library 26 unterstützt Android jetzt standardmäßig benutzerdefinierte Schriftarten. Sie können neue Schriftarten in res / fonts einfügen, die entweder in XML oder programmgesteuert einzeln auf TextViews eingestellt werden können. Die Standardschriftart für die gesamte Anwendung kann auch durch die Festlegung auf diese styles.xml Der Androide Entwicklerdokumentation hat eine klare Führung verändert werden hier
Das Festlegen der Schriftart mithilfe von Java-Code ist aufgrund mehrerer Zeilen schwierig. Ich habe eine Bibliothek zum Festlegen benutzerdefinierter Schriftarten erstellt. Sie können eine Bibliotheksnutzung in dieser Antwort finden stackoverflow.com/a/42001474/4446392
Chathura Jayanath
254
Laden Sie zuerst die .ttfDatei der gewünschten Schriftart herunter ( arial.ttf). Legen Sie es in den assets Ordner. (Erstellen Sie im Ordner "Assets" einen neuen Ordner mit dem Namen " Schriftarten" und platzieren Sie ihn darin.) Verwenden Sie den folgenden Code, um die Schriftart auf Ihre Datei anzuwenden TextView:
Typeface type =Typeface.createFromAsset(getAssets(),"fonts/arial.ttf");
textView.setTypeface(type);
Sehr geehrter Mayur, gibt es eine Empfehlung, wo Sie diese .ttf-Dateien erhalten können?
Einzelgänger
3
Sehr geehrter @lonelearner, Sie können kostenlose Schriftarten (.ttf) auf 1001freefonts.com herunterladen oder einfach "Kostenlose Schriftarten"
googeln
10
Informationen zu Benutzern von Android Studio, die keinen Ordner "Assets" finden können, finden Sie in dieser Frage . Kurze Antwort : src/main/assets/fonts/.
Adamdport
51
Typeface tf =Typeface.createFromAsset(getAssets(),"fonts/DroidSansFallback.ttf");TextView tv =(TextView) findViewById(R.id.CustomFontText);
tv.setTypeface(tf);
Möglicherweise möchten Sie eine statische Klasse erstellen , die alle Schriftarten enthält. Auf diese Weise erstellen Sie die Schriftart nicht mehrmals, was sich negativ auf die Leistung auswirken kann . Stellen Sie einfach sicher, dass Sie einen Unterordner mit dem Namen " Schriftarten " unter dem Ordner " Assets " erstellen .
Mach so etwas wie:
publicclassCustomFontsLoader{publicstaticfinalint FONT_NAME_1 =0;publicstaticfinalint FONT_NAME_2 =1;publicstaticfinalint FONT_NAME_3 =2;privatestaticfinalint NUM_OF_CUSTOM_FONTS =3;privatestaticboolean fontsLoaded =false;privatestaticTypeface[] fonts =newTypeface[3];privatestaticString[] fontPath ={"fonts/FONT_NAME_1.ttf","fonts/FONT_NAME_2.ttf","fonts/FONT_NAME_3.ttf"};/**
* Returns a loaded custom font based on it's identifier.
*
* @param context - the current context
* @param fontIdentifier = the identifier of the requested font
*
* @return Typeface object of the requested font.
*/publicstaticTypeface getTypeface(Context context,int fontIdentifier){if(!fontsLoaded){
loadFonts(context);}return fonts[fontIdentifier];}privatestaticvoid loadFonts(Context context){for(int i =0; i < NUM_OF_CUSTOM_FONTS; i++){
fonts[i]=Typeface.createFromAsset(context.getAssets(), fontPath[i]);}
fontsLoaded =true;}}
Auf diese Weise können Sie die Schriftart von überall in Ihrer Anwendung abrufen.
Super Kerl! Das ist die Schönheit von OOP. Gute Arbeit! :)
Joshua Michael Waggoner
Wie benutze ich diese Klasse?
Jack
Sie müssen diesen Code in Ihr Projekt einfügen, ihn an Ihre Schriftarten anpassen und dann die statische Methode getTypeface (..) von überall in Ihrer App verwenden.
Daniel L.
Ich habe eine ähnliche Lösung verwendet, aber Caching hinzugefügt, um die Leistung zu verbessern. Sind Sie auf jeden Fall auf eine Situation gestoßen, in der die Schriftart auf einigen Telefonen funktioniert und auf anderen nicht?
Warum ist die Unterklasse von TextView die beste Vorgehensweise?
Stealth Rabbi
@Stealth Rabbi, hier können wir benutzerdefinierte Schriftarten nur per XML übergeben, ohne dass für jede Textansicht ein spezieller Java-Code geschrieben werden muss.
Hiren Patel
Dafür gibt es eine Bibliothek. Fügen Sie einfach Ihre Schriftart unter dem Asset-Ordner hinzu und deklarieren Sie sie in XML. github.com/febaisi/CustomTextView
febaisi
Ihre Bibliothek sieht gut aus, aber das einzige Problem ist, dass es für Android 21+ ist
Die obigen Antworten sind richtig. Stellen Sie einfach sicher, dass Sie einen Unterordner mit dem Namen "Schriftarten" unter dem Ordner "Assets" erstellen, wenn Sie diesen Code verwenden.
Warum hat diese Antwort nur 1 Gegenstimme und die obige 15? Was macht den anderen besser? Mir scheint, dieser ist der einfachere nach dem Singleton-Prinzip ...?
Koen Demonie
Ich habe gerade gesehen, dass Sie Ihren Konstruktor öffentlich haben, ich würde ihn privat machen, da Sie keinen Zugriff darauf benötigen. Du benutzt sowieso deine inneren Schriftarten ...
Koen Demonie
Sollte unbedingt ein privater Konstruktor sein. Gut entdeckt :) Wird bearbeitet!
Chris Aitchison
12
Es wird empfohlen, die Android Support Library Version 26.0.0 oder höher zu verwenden.
SCHRITT 1: Schriftdatei hinzufügen
In res Ordner neu erstellen Schriftressourcenverzeichnis
Schriftartdatei hinzufügen ( .ttf , .orf )
Wenn beispielsweise die Schriftartdatei helvetica_neue.ttf lautet, wird R.font.helvetica_neue generiert
SCHRITT 2: Erstellen Sie eine Schriftfamilie
Fügen Sie im Schriftartenordner eine neue Ressourcendatei hinzu
Fügen Sie jede Schriftartdatei, jeden Stil und jedes Gewichtsattribut in das Element ein.
Es ist ein bisschen alt, aber ich habe die Klasse CustomFontLoader ein wenig verbessert und wollte sie teilen, damit sie hilfreich sein kann. Erstellen Sie einfach eine neue Klasse mit diesem Code.
Erstellen Sie dann ein Verzeichnis mit dem Namen "font" im Ordner res
Legen Sie Schriftarten (ttf) -Dateien in dieses Schriftartenverzeichnis, beachten Sie die Namenskonventionen [egname sollte keine Sonderzeichen, Großbuchstaben und Leerzeichen oder Tabulatoren enthalten]
Verweisen Sie danach wie folgt auf diese Schriftart aus XML
Müssen Sie diese Klasse in MainActivity instanziieren? Weil es für mich nichts ändert.
Tobias Mayr
1
Android verwendet die Roboto-Schriftart, eine wirklich gut aussehende Schriftart mit verschiedenen Gewichten (normal, leicht, dünn, komprimiert), die auf Bildschirmen mit hoher Dichte großartig aussehen.
Überprüfen Sie den folgenden Link, um die Roboto-Schriftarten zu überprüfen:
Zurück zu Ihrer Frage: Wenn Sie die Schriftart für alle Textansichten / Schaltflächen in Ihrer App ändern möchten , fügen Sie den folgenden Code in Ihre styles.xml ein, um die Roboto-light- Schriftart zu verwenden:
<!-- Base application theme. --><stylename="AppTheme"parent="Theme.AppCompat.Light.DarkActionBar"><!-- Customize your theme here.-->......<item name="android:buttonStyle">@style/MyButton</item><item name="android:textViewStyle">@style/MyTextView</item></style><stylename="MyButton"parent="@style/Widget.AppCompat.Button"><item name="android:textAllCaps">false</item><item name="android:fontFamily">sans-serif-light</item></style><stylename="MyTextView"parent="@style/TextAppearance.AppCompat"><item name="android:fontFamily">sans-serif-light</item></style>
Und vergessen Sie nicht, 'AppTheme' in Ihrer AndroidManifest.xml zu verwenden
Antworten:
Erstens ist die Standardeinstellung nicht Arial. Der Standardwert ist Droid Sans.
Zweitens, um zu einer anderen integrierten Schriftart zu wechseln, verwenden Sie
android:typeface
in Layout-XML odersetTypeface()
in Java.Drittens gibt es in Android keine Helvetica-Schriftart. Die integrierten Optionen sind Droid Sans (
sans
), Droid Sans Mono (monospace
) und Droid Serif (serif
). Während Sie Ihre eigenen Schriftarten mit Ihrer Anwendung bündeln und über verwenden könnensetTypeface()
, sollten Sie berücksichtigen, dass die Schriftdateien groß sind und in einigen Fällen Lizenzvereinbarungen erfordern (z. B. Helvetica, eine Linotype-Schriftart ).BEARBEITEN
Nach ICS enthält Android den Roboto-Schriftstil. Lesen Sie mehr Roboto
BEARBEITEN 2
quelle
Laden Sie zuerst die
.ttf
Datei der gewünschten Schriftart herunter (arial.ttf
). Legen Sie es in denassets
Ordner. (Erstellen Sie im Ordner "Assets" einen neuen Ordner mit dem Namen " Schriftarten" und platzieren Sie ihn darin.) Verwenden Sie den folgenden Code, um die Schriftart auf Ihre Datei anzuwendenTextView
:quelle
src/main/assets/fonts/
.quelle
Möglicherweise möchten Sie eine statische Klasse erstellen , die alle Schriftarten enthält. Auf diese Weise erstellen Sie die Schriftart nicht mehrmals, was sich negativ auf die Leistung auswirken kann . Stellen Sie einfach sicher, dass Sie einen Unterordner mit dem Namen " Schriftarten " unter dem Ordner " Assets " erstellen .
Mach so etwas wie:
Auf diese Weise können Sie die Schriftart von überall in Ihrer Anwendung abrufen.
quelle
Best Practice aller Zeiten
TextViewPlus.java:
attrs.xml: (Wo res / values platziert werden soll )
Wie benutzt man:
Hoffe das wird dir helfen.
quelle
Die obigen Antworten sind richtig. Stellen Sie einfach sicher, dass Sie einen Unterordner mit dem Namen "Schriftarten" unter dem Ordner "Assets" erstellen, wenn Sie diesen Code verwenden.
quelle
Eine andere Möglichkeit, die Erstellung von Schriftarten zu konsolidieren ...
Und dann in Ihrer Aktivität zu verwenden ...
Wohlgemerkt, diese doppelt überprüfte Sperrsprache mit dem flüchtigen Feld funktioniert nur mit dem in Java 1.5+ verwendeten Speichermodell korrekt.
quelle
Es wird empfohlen, die Android Support Library Version 26.0.0 oder höher zu verwenden.
SCHRITT 1: Schriftdatei hinzufügen
Wenn beispielsweise die Schriftartdatei helvetica_neue.ttf lautet, wird R.font.helvetica_neue generiert
SCHRITT 2: Erstellen Sie eine Schriftfamilie
Beispielsweise:
SCHRITT 3: Verwenden Sie es
In XML-Layouts:
Oder fügen Sie dem Stil Schriftarten hinzu:
Weitere Beispiele finden Sie in der Dokumentation:
quelle
Es ist ein bisschen alt, aber ich habe die Klasse CustomFontLoader ein wenig verbessert und wollte sie teilen, damit sie hilfreich sein kann. Erstellen Sie einfach eine neue Klasse mit diesem Code.
Verwenden Sie dann einfach diesen Code in Ihrer Textansicht:
quelle
Ich habe endlich eine sehr einfache Lösung dafür gefunden.
Verwenden Sie diese Support-Bibliotheken in Gradle auf App-Ebene .
Erstellen Sie dann ein Verzeichnis mit dem Namen "font" im Ordner res
Verweisen Sie danach wie folgt auf diese Schriftart aus XML
In diesem Beispiel ist times_new_roman_test eine Schriftart-ttf-Datei aus diesem Schriftartenverzeichnis
quelle
Auf diese Weise können Sie eine Ansicht erstellen, die von TextView erbt und setTypeface für den Konstruktor aufruft.
quelle
Wenn Ihre Schriftart darin gespeichert ist,
res/asset/fonts/Helvetica.ttf
verwenden Sie Folgendes:Wenn Ihre Schriftartdatei darin gespeichert ist,
res/font/helvetica.ttf
verwenden Sie Folgendes:quelle
Holen Sie sich die Schriftart aus dem Asset und setzen Sie sie auf alle untergeordneten Elemente
quelle
add to attrs.xml, Die Zahlen sollten in der Reihenfolge in der Array-Klasse sein.
quelle
Android verwendet die Roboto-Schriftart, eine wirklich gut aussehende Schriftart mit verschiedenen Gewichten (normal, leicht, dünn, komprimiert), die auf Bildschirmen mit hoher Dichte großartig aussehen.
Überprüfen Sie den folgenden Link, um die Roboto-Schriftarten zu überprüfen:
Verwendung von Roboto im XML-Layout
Zurück zu Ihrer Frage: Wenn Sie die Schriftart für alle Textansichten / Schaltflächen in Ihrer App ändern möchten , fügen Sie den folgenden Code in Ihre styles.xml ein, um die Roboto-light- Schriftart zu verwenden:
Und vergessen Sie nicht, 'AppTheme' in Ihrer AndroidManifest.xml zu verwenden
quelle
Vielleicht etwas einfacher:
(Beachten Sie, dass dieser Code nicht getestet wurde, aber im Allgemeinen sollte dieser Ansatz gut funktionieren.)
quelle