J'utilise la police légère Roboto dans mon application. Pour définir la police, je dois l'ajouter android:fontFamily="sans-serif-light"
à chaque vue. Existe-t-il un moyen de déclarer la police Roboto comme famille de polices par défaut pour toute l'application? J'ai essayé comme ça mais ça ne semblait pas marcher.
<style name="AppBaseTheme" parent="android:Theme.Light"></style>
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:fontFamily">sans-serif-light</item>
</style>
android
android-fonts
tomrozb
la source
la source
Réponses:
La réponse est oui.
Global Roboto light pour
TextView
etButton
classes:Sélectionnez simplement le style souhaité dans la liste themes.xml , puis créez votre style personnalisé en fonction de celui d'origine. À la fin, appliquez le style comme thème de l'application.
Cela ne fonctionnera qu'avec des polices intégrées comme Roboto, mais c'était la question. Pour les polices personnalisées (chargées à partir d'actifs par exemple), cette méthode ne fonctionnera pas.
EDIT 13/08/15
Si vous utilisez des thèmes AppCompat, n'oubliez pas de supprimer le
android:
préfixe. Par exemple:Notez que le
buttonStyle
ne contient pas deandroid:
préfixe, maistextViewStyle
doit le contenir.la source
sans-serif-light
tiré la valeur? Existe-t-il une liste de valeurs validesfontFamily
quelque part? J'ai parcouru les documents, ainsi que les fichiers de thème et de style dans la source Android et je ne trouve rien.Avec la sortie d'Android Oreo, vous pouvez utiliser la bibliothèque de support pour atteindre cet objectif.
Référencez votre famille de polices par défaut dans le style principal de votre application:
Consultez https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html pour des informations plus détaillées.
la source
android:
préfixeBase.TextAppearance.AppCompat
, il n'y est pas utilisé.Pour modifier la police de votre application, procédez comme suit:
res
répertoire intérieur , créez un nouveau répertoire et appelez-lefont
.res
->values
-> à l'styles.xml
intérieur<resources>
-><style>
ajoutez votre police<item name="android:fontFamily">@font/font_name</item>
.Maintenant, tout le texte de votre application doit être dans la source que vous ajoutez.
la source
LISEZ LES MISES À JOUR CI-DESSOUS
J'ai eu le même problème avec l'incorporation d'une nouvelle police et j'ai finalement réussi à travailler avec l'extension de TextView et à définir la police de caractères à l'intérieur.
Vous devez modifier les éléments TextView ultérieurement de à en dans chaque élément. Et si vous utilisez UI-Creator dans Eclipse, il n'a parfois pas le droit de TextViews. C'était la seule chose qui fonctionnait pour moi ...
METTRE À JOUR
Aujourd'hui, j'utilise la réflexion pour changer les polices de caractères dans toute l'application sans étendre TextViews. Découvrez ce post SO
MISE À JOUR 2
À partir de l'API niveau 26 et disponible dans la «bibliothèque de support», vous pouvez utiliser
Pour plus d'informations: Polices en XML
la source
getContext()
lorsque la variable est statique. Vous devez l'implémenter de manière singleton, sinon le code actuel ne sera même pas compilé.Ajoutez cette ligne de code dans votre res / value / styles.xml
le style entier ressemblera à ça
changez "circular_medium" en votre propre nom de police.
la source
Ne parlez pas de performances, pour la police personnalisée, vous pouvez avoir une boucle de méthode récursive à travers toutes les vues et définir la police de caractères s'il s'agit d'un TextView:
Dans toute votre activité, passez-lui le ViewGroup actuel après setContentView et c'est fait:
Pour fragment, vous pouvez faire quelque chose de similaire.
la source
recyclerView
comme l'enfer.Une autre façon de le faire pour l'ensemble de l'application utilise la réflexion basée sur cette réponse
puis chaque fois que vous souhaitez remplacer les polices, vous pouvez simplement appeler la méthode et lui donner une carte des polices de caractères comme suit:
pour un exemple complet, vérifiez
Cela ne fonctionne que pour Android SDK 21 et supérieur pour les versions antérieures, consultez l'exemple complet
la source
Utilisez simplement cette bibliothèque, compilez-la dans votre fichier de notes
et l'utiliser dans la méthode onCreate dans l'activité principale
C'est la façon la plus rapide et la plus élégante de le faire.
la source
C'est du travail pour mon projet, source https://gist.github.com/artem-zinnatullin/7749076
Créez le répertoire des polices dans le dossier Asset, puis copiez votre police personnalisée dans le répertoire des polices, par exemple, j'utilise trebuchet.ttf;
Créez une classe TypefaceUtil.java;
Modifier le thème dans styles.xml ajouter ci-dessous
Exemple dans My styles.xml
Enfin, dans Activity or Fragment onCreate, appelez TypefaceUtil.java
la source
Android ne fournit pas beaucoup de support pour l'application de polices sur l'ensemble de l'application (voir ce problème ). Vous avez 4 options pour définir la police de l'application entière:
Les détails de ces options sont disponibles ici .
la source
Je sais que cette question est assez ancienne, mais j'ai trouvé une bonne solution. Fondamentalement, vous passez une disposition de conteneur à cette fonction, et elle appliquera la police à toutes les vues prises en charge, et récursivement dans les dispositions enfant:
la source
à caractère simplement ensemble de l' application à
normal
,sans
,serif
oumonospace
(pas une police personnalisée!), vous pouvez le faire.définissez un thème et définissez l'
android:typeface
attribut sur la police que vous souhaitez utiliser dansstyles.xml
:appliquer le thème à l'ensemble de l'application dans le
AndroidManifest.xml
fichier:référence android
la source
Essayez cette bibliothèque, légère et facile à implémenter
https://github.com/sunnag7/FontStyler
la source
La réponse est non, vous ne pouvez pas. Voir Est-il possible de définir une police personnalisée pour l'ensemble de l'application? pour plus d'informations.
Il existe des solutions de contournement, mais rien dans les lignes de "une seule ligne de code ici et toutes mes polices seront ceci au lieu de cela ".
(Je remercie Google - et Apple - pour cela). Les polices personnalisées ont une place, mais les rendre faciles à remplacer à l'échelle de l'application aurait créé un monde entier d' applications Comic Sans )
la source