Tout d'abord, la valeur par défaut n'est pas Arial. La valeur par défaut est Droid Sans.
Deuxièmement, pour passer à une autre police intégrée, utilisez la android:typefacemise en page XML ou setTypeface()Java.
Troisièmement, il n'y a pas de police Helvetica dans Android. Les choix intégrés sont Droid Sans ( sans), Droid Sans Mono ( monospace) et Droid Serif ( serif). Bien que vous puissiez regrouper vos propres polices avec votre application et les utiliser via setTypeface(), gardez à l'esprit que les fichiers de polices sont volumineux et, dans certains cas, nécessitent des accords de licence (par exemple, Helvetica, une police Linotype ).
ÉDITER
Le langage de conception Android repose sur des outils typographiques traditionnels tels que l'échelle, l'espace, le rythme et l'alignement avec une grille sous-jacente. Le déploiement réussi de ces outils est essentiel pour aider les utilisateurs à comprendre rapidement un écran d'informations. Pour prendre en charge une telle utilisation de la typographie, Ice Cream Sandwich a introduit une nouvelle famille de types nommée Roboto, créée spécifiquement pour les exigences de l'interface utilisateur et des écrans haute résolution.
Le cadre TextView actuel offre Roboto dans des poids minces, légers, réguliers et gras, ainsi qu'un style italique pour chaque poids. Le cadre propose également la variante Roboto Condensed dans des poids réguliers et gras, ainsi qu'un style italique pour chaque poids.
Après ICS, Android inclut le style de polices Roboto, En savoir plus Roboto
EDIT 2
Avec l'avènement de la bibliothèque de support 26, Android prend désormais en charge les polices personnalisées par défaut. Vous pouvez insérer de nouvelles polices dans res / fonts qui peuvent être définies individuellement sur TextViews en XML ou par programme. La police par défaut pour toute l'application peut également être modifiée en la définissant styles.xml La documentation pour les développeurs Android contient un guide clair à ce sujet ici
La définition de la police de caractères à l'aide du code java est difficile en raison de plusieurs lignes, j'ai créé une bibliothèque pour définir des polices personnalisées. Vous pouvez trouver une utilisation de la bibliothèque dans cette réponse stackoverflow.com/a/42001474/4446392
Chathura Jayanath
254
Téléchargez d'abord le .ttffichier de la police dont vous avez besoin ( arial.ttf). Placez-le dans le assets dossier. (Dans le dossier des ressources, créez un nouveau dossier nommé polices et placez-le à l'intérieur.) Utilisez le code suivant pour appliquer la police à votre TextView:
Typeface type =Typeface.createFromAsset(getAssets(),"fonts/arial.ttf");
textView.setTypeface(type);
Vous voudrez peut-être créer une classe statique qui contiendra toutes les polices. De cette façon, vous ne créerez pas la police plusieurs fois, ce qui pourrait avoir un impact négatif sur les performances . Assurez-vous simplement de créer un sous-dossier appelé " polices " sous " ressources " dossier ".
Faites quelque chose comme:
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;}}
De cette façon, vous pouvez obtenir la police de partout dans votre application.
Génial frérot! Telle est la beauté de la POO. Bon travail! :)
Joshua Michael Waggoner
Comment utiliser cette classe?
Jack
Vous devez placer ce code dans votre projet, l'adapter à vos polices, puis utiliser la méthode statique getTypeface (..) de partout dans votre application.
Daniel L.
J'ai utilisé une solution similaire, mais j'ai ajouté la mise en cache pour améliorer les performances .... dans tous les cas, avez-vous rencontré une situation où la police fonctionne sur certains téléphones et pas dans d'autres?
Pourquoi le sous-classement de TextView est-il la meilleure pratique?
Stealth Rabbi
@Stealth Rabbi, ici nous pouvons passer des polices personnalisées uniquement en XML, pas besoin d'écrire du code Java spécial pour chaque affichage de texte.
Hiren Patel
Il y a une bibliothèque pour ça. Ajoutez simplement votre police sous le dossier des ressources et déclarez-la en XML. github.com/febaisi/CustomTextView
febaisi
Votre bibliothèque semble bien, mais le seul problème est qu'elle est pour Android 21+
Les réponses ci-dessus sont correctes. Assurez-vous simplement de créer un sous-dossier appelé "polices" sous le dossier "actifs" si vous utilisez ce morceau de code.
Attention, cet idiome de verrouillage à double vérification avec le champ volatile ne fonctionne correctement qu'avec le modèle de mémoire utilisé dans Java 1.5+.
Pourquoi cette réponse a-t-elle seulement 1 vote positif et celle ci-dessus en a 15? Qu'est-ce qui rend l'autre meilleur? Il me semble que celui-ci est le plus simple en utilisant le principe singleton ...?
Koen Demonie
Je viens de voir que vous avez votre constructeur public, je le rendrais privé car vous n'avez pas besoin d'y accéder. Vous utilisez vos polices internes de toute façon ...
Koen Demonie
Absolument devrait être un constructeur privé. Bien repéré :) éditera!
Chris Aitchison
12
La meilleure pratique consiste à utiliser la bibliothèque de support Android version 26.0.0 ou supérieure.
ÉTAPE 1: ajouter un fichier de police
Dans le dossier res , créez une nouvelle police dictionnaire de ressources de
Ajouter un fichier de police ( .ttf , .orf )
Par exemple, lorsque le fichier de police sera helvetica_neue.ttf qui générera R.font.helvetica_neue
ÉTAPE 2: créer une famille de polices
Dans la police dossier des , ajoutez un nouveau fichier de ressources
Joignez chaque fichier de police, style et attribut d'épaisseur à l'élément.
C'est un peu vieux, mais j'ai amélioré un peu la classe CustomFontLoader et je voulais la partager pour qu'elle puisse être utile. Créez simplement une nouvelle classe avec ce code.
puis créez un répertoire nommé "police" dans le dossier res
placez les fichiers de polices (ttf) dans ce répertoire de polices, gardez à l'esprit les conventions de dénomination [par exemple, le nom ne doit contenir aucun caractère spécial, aucun caractère majuscule et aucun espace ou tabulation]
Après cela, référencez cette police de XML comme ceci
Avez-vous besoin d'instancier cette classe dans MainActivity? Parce que ça ne change rien pour moi.
Tobias Mayr
1
Android utilise la police Roboto, qui est une police très agréable à regarder, avec plusieurs poids différents (régulier, léger, fin, condensé) qui ont fière allure sur les écrans haute densité.
Vérifiez le lien ci-dessous pour vérifier les polices roboto:
Revenons à votre question, si vous souhaitez modifier la police de tous les TextView / Button dans votre application , essayez d'ajouter le code ci-dessous dans votre styles.xml pour utiliser la police Roboto-light :
<!-- 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>
Et n'oubliez pas d'utiliser 'AppTheme' dans votre AndroidManifest.xml
Réponses:
Tout d'abord, la valeur par défaut n'est pas Arial. La valeur par défaut est Droid Sans.
Deuxièmement, pour passer à une autre police intégrée, utilisez la
android:typeface
mise en page XML ousetTypeface()
Java.Troisièmement, il n'y a pas de police Helvetica dans Android. Les choix intégrés sont Droid Sans (
sans
), Droid Sans Mono (monospace
) et Droid Serif (serif
). Bien que vous puissiez regrouper vos propres polices avec votre application et les utiliser viasetTypeface()
, gardez à l'esprit que les fichiers de polices sont volumineux et, dans certains cas, nécessitent des accords de licence (par exemple, Helvetica, une police Linotype ).ÉDITER
Après ICS, Android inclut le style de polices Roboto, En savoir plus Roboto
EDIT 2
la source
Téléchargez d'abord le
.ttf
fichier de la police dont vous avez besoin (arial.ttf
). Placez-le dans leassets
dossier. (Dans le dossier des ressources, créez un nouveau dossier nommé polices et placez-le à l'intérieur.) Utilisez le code suivant pour appliquer la police à votreTextView
:la source
src/main/assets/fonts/
.la source
Vous voudrez peut-être créer une classe statique qui contiendra toutes les polices. De cette façon, vous ne créerez pas la police plusieurs fois, ce qui pourrait avoir un impact négatif sur les performances . Assurez-vous simplement de créer un sous-dossier appelé " polices " sous " ressources " dossier ".
Faites quelque chose comme:
De cette façon, vous pouvez obtenir la police de partout dans votre application.
la source
Les meilleures pratiques de tous les temps
TextViewPlus.java:
attrs.xml: (Où placer res / valeurs )
Comment utiliser:
J'espère que ceci vous aidera.
la source
Les réponses ci-dessus sont correctes. Assurez-vous simplement de créer un sous-dossier appelé "polices" sous le dossier "actifs" si vous utilisez ce morceau de code.
la source
Une autre façon de consolider la création de polices ...
Et puis à utiliser dans votre activité ...
Attention, cet idiome de verrouillage à double vérification avec le champ volatile ne fonctionne correctement qu'avec le modèle de mémoire utilisé dans Java 1.5+.
la source
La meilleure pratique consiste à utiliser la bibliothèque de support Android version 26.0.0 ou supérieure.
ÉTAPE 1: ajouter un fichier de police
Par exemple, lorsque le fichier de police sera helvetica_neue.ttf qui générera R.font.helvetica_neue
ÉTAPE 2: créer une famille de polices
Par exemple:
ÉTAPE 3: utilisez-le
Dans les présentations XML:
Ou ajoutez des polices au style:
Pour plus d'exemples, vous pouvez suivre la documentation:
la source
C'est un peu vieux, mais j'ai amélioré un peu la classe CustomFontLoader et je voulais la partager pour qu'elle puisse être utile. Créez simplement une nouvelle classe avec ce code.
Ensuite, utilisez simplement ce code sur votre affichage de texte:
la source
J'ai finalement obtenu une solution très simple à cela.
utilisez ces bibliothèques de support dans le niveau d'application ,
puis créez un répertoire nommé "police" dans le dossier res
Après cela, référencez cette police de XML comme ceci
Dans cet exemple, times_new_roman_test est un fichier ttf de police de ce répertoire de police
la source
De cette façon, vous pouvez créer une vue qui hérite de TextView et appelle setTypeface sur son constructeur.
la source
Lorsque votre police est stockée à l'intérieur,
res/asset/fonts/Helvetica.ttf
utilisez ce qui suit:Ou, si votre fichier de polices est stocké à l'intérieur,
res/font/helvetica.ttf
utilisez ce qui suit:la source
obtenir la police de l'actif et définir pour tous les enfants
la source
ajouter à attrs.xml, les nombres doivent être dans l'ordre dans la classe de tableau.
la source
Android utilise la police Roboto, qui est une police très agréable à regarder, avec plusieurs poids différents (régulier, léger, fin, condensé) qui ont fière allure sur les écrans haute densité.
Vérifiez le lien ci-dessous pour vérifier les polices roboto:
Comment utiliser Roboto dans une mise en page XML
Revenons à votre question, si vous souhaitez modifier la police de tous les TextView / Button dans votre application , essayez d'ajouter le code ci-dessous dans votre styles.xml pour utiliser la police Roboto-light :
Et n'oubliez pas d'utiliser 'AppTheme' dans votre AndroidManifest.xml
la source
Peut-être quelque chose d'un peu plus simple:
(Notez que ce code n'est pas testé, mais en général, cette approche devrait bien fonctionner.)
la source