Je voudrais donc changer le android:fontFamily
dans Android, mais je ne vois aucune police prédéfinie dans Android. Comment sélectionner l'un des paramètres prédéfinis? Je n'ai pas vraiment besoin de définir mon propre TypeFace mais tout ce dont j'ai besoin est quelque chose de différent de ce qu'il montre en ce moment.
<TextView
android:id="@+id/HeaderText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="52dp"
android:gravity="center"
android:text="CallerBlocker"
android:textSize="40dp"
android:fontFamily="Arial"
/>
Il semble que ce que j'ai fait là-haut ne fonctionnera pas vraiment! BTW android:fontFamily="Arial"
était une tentative stupide!
Réponses:
Depuis Android 4.1 / 4.2 / 5.0, les familles de polices Roboto suivantes sont disponibles:
en combinaison avec
ces 16 variantes sont possibles:
fonts.xml
la source
android:fontFamily="sans-serif-black-small-caps"
fonctionne pas. Est-ce que quelqu'un sait?android:fontFamily
TextView.Voici la façon de définir la police par programme:
placez le fichier de police dans votre dossier d'actifs. Dans mon cas, j'ai créé un sous-répertoire appelé polices.
EDIT: Si vous vous demandez où est votre dossier d'actifs, voyez cette question
la source
À partir d' Android-Studio 3.0, il est très facile de changer la famille de polices
En utilisant la bibliothèque de support 26, il fonctionnera sur les appareils exécutant l'API Android version 16 et supérieure
Créez un dossier
font
sous leres
répertoire. Téléchargez la police que vous voulez et collez-la dans lefont
dossier. La structure devrait être quelque chose comme ci-dessousRemarque: À partir de la bibliothèque de support Android 26.0, vous devez déclarer les deux ensembles d'attributs (android: et app:) pour vous assurer que vos polices se chargent sur les appareils exécutant Api 26 ou une version antérieure.
Vous pouvez maintenant changer la police de la mise en page à l' aide
Pour changer Programatically
Pour changer la police à l'aide de styles.xml, créez un style
et appliquer ce style à
TextView
vous pouvez également créer votre propre famille de polices
- Cliquez avec le bouton droit sur le dossier de polices et accédez à Nouveau> Fichier de ressources de polices . La fenêtre Nouveau fichier de ressources apparaît.
- Saisissez le nom du fichier , puis cliquez sur OK . La nouvelle ressource de police XML s'ouvre dans l'éditeur.
Écrivez votre propre famille de polices ici, par exemple
il s'agit simplement d'un mappage d'un fontStyle et d'un fontWeight spécifiques à la ressource de police qui sera utilisée pour rendre cette variante spécifique. Les valeurs valides pour fontStyle sont normales ou italiques; et fontWeight est conforme à la spécification CSS de poids de police
1. Pour changer la famille de polices dans la mise en page, vous pouvez écrire
2. Pour changer par programme
Pour changer la police de l'application entière Ajoutez ces deux lignes dans AppTheme
Voir la documentation , le didacticiel sur les polices personnalisées Android pour plus d'informations
la source
getResources()
? EDIT : Cette ligne à la fin de votre réponse a fonctionné pour moi:Typeface typeface = ResourcesCompat.getFont(context, R.font.myfont);
android:fontWeight
etapp:fontWeight
J'ai dû analyser
/system/etc/fonts.xml
dans un projet récent. Voici les familles de polices actuelles de Lollipop:Voici l'analyseur (basé sur FontListParser ):
N'hésitez pas à utiliser la classe ci-dessus dans votre projet. Par exemple, vous pouvez donner à vos utilisateurs une sélection de familles de polices et définir la police de caractères en fonction de leurs préférences.
Un petit exemple incomplet:
la source
getSystemFonts()
, j'ai eu une exceptionorg.xmlpull.v1.XmlPullParserException: END_TAG expected (position:START_TAG (empty) <axis tag='wdth' stylevalue='100.0'>@219:51 in java.io.InputStreamReader@f001fb3)
Android ne vous permet pas de définir des polices personnalisées à partir de la disposition XML. Au lieu de cela, vous devez regrouper le fichier de police spécifique dans le dossier des ressources de votre application et le définir par programme. Quelque chose comme:
Notez que vous ne pouvez exécuter ce code qu'après l'appel de setContentView (). De plus, seules certaines polices sont prises en charge par Android et doivent être au format
.ttf (TrueType)
ou.otf (OpenType)
. Même dans ce cas, certaines polices peuvent ne pas fonctionner.Il s'agit d'une police qui fonctionne définitivement sur Android, et vous pouvez l'utiliser pour confirmer que votre code fonctionne au cas où votre fichier de police ne serait pas pris en charge par Android.
Mise à jour Android O: Ceci est désormais possible avec XML dans Android O , sur la base des commentaires de Roger.
la source
Pour définir Roboto par programme:
la source
C'est la même chose que
android:typeface
.les polices intégrées sont:
Voir android: police de caractères .
la source
setTypeface()
. À savoirfontFamily
,typeface
ettextStyle
. Mais je ne peux pas pour la vie de moi comprendre comment ceux-ci sont précisément combinés pour résoudre une instance concrète de Typeface. Quelqu'un a-t-il compris cela? La documentation de Google est loin d'être utile ...Si vous le souhaitez par programme, vous pouvez utiliser
Où
SANS_SERIF
vous pouvez utiliser:DEFAULT
DEFAULT_BOLD
MONOSPACE
SANS_SERIF
SERIF
Et où
ITALIC
vous pouvez utiliser:BOLD
BOLD_ITALIC
ITALIC
NORMAL
Tout est indiqué sur les développeurs Android
la source
J'utilise une excellente bibliothèque Calligraphy de Chris Jenx conçue pour vous permettre d'utiliser des polices personnalisées dans votre application Android. Essaie!
la source
Ce que vous voulez n'est pas possible. Vous devez définir
TypeFace
votre code.Dans
XML
ce que vous pouvez faire,à part cela, vous ne pouvez pas jouer beaucoup avec les polices en XML. :)
Car
Arial
vous devez définir le type de visage dans votre code.la source
Un moyen simple de gérer les polices serait de les déclarer via des ressources, en tant que telles:
Ceci est basé sur le code source ici et ici
la source
Dynamiquement, vous pouvez définir la famille de polices similaire à android: fontFamily en xml en utilisant ceci,
Il s'agit de la liste des familles de polices par défaut utilisées, utilisez tout cela en remplaçant la chaîne de guillemets doubles "sans-serif-medium"
"mycustomfont.ttf" est le fichier ttf. Le chemin sera dans src / assets / fonts / mycustomfont.ttf , vous pouvez en savoir plus sur la police par défaut dans cette famille de polices par défaut
la source
définissez facilement la police sur n'importe quelle vue de texte à partir du répertoire res> font par programmation
la source
Je pense que je suis trop tard, mais cette solution peut-être utile pour les autres. Pour utiliser une police personnalisée, placez votre fichier de police dans votre répertoire de polices.
la source
Avec quelques essais et erreurs, j'ai appris ce qui suit.
Dans le * .xml, vous pouvez combiner les polices de base avec les fonctions suivantes, pas seulement avec la police de caractères:
Avec ces deux styles, il n'était pas nécessaire d'utiliser la police de caractères dans les autres cas. La gamme de combinaisons est beaucoup plus large avec fontfamily & textStyle.
la source
La valeur valide d'android: fontFamily est définie dans /system/etc/system_fonts.xml(4.x) ou /system/etc/fonts.xml(5.x). Mais le fabricant du périphérique peut le modifier, de sorte que la police réelle utilisée en définissant la valeur fontFamily dépend du fichier mentionné ci-dessus du périphérique spécifié.
Dans AOSP, la police Arial est valide mais doit être définie en utilisant "arial" et non "Arial", par exemple android: fontFamily = "arial" . Jetez un coup d'œil sur le fichier system_fonts.xml de Kitkat
//////////////////////////////////////////////////// //////////////////////////
Il y a trois xml-attributs pertinents pour la définition d' une "police" dans layout-- android: fontFamily , android: caractères et Android: TEXTSTYLE . La combinaison de "fontFamily" et "textStyle" ou "typeface" et "textStyle" peut être utilisée pour changer l'apparence de la police dans le texte, donc elle est utilisée seule. Extrait de code dans TextView.java comme ceci:
D'après le code, nous pouvons voir:
la source
Voici une méthode plus simple qui peut fonctionner dans certains cas. Le principe est d'ajouter un TextVview non visible dans votre mise en page XML et d' obtenir son typeFace dans le code java.
La disposition dans le fichier xml:
Et le code java:
Cela a fonctionné pour moi (dans un TextSwitcher par exemple).
la source
Essaye ça:
la source
Vous pouvez également le faire en ajoutant un dossier de polices sous le répertoire res comme ci-dessous.
Sélectionnez ensuite Police comme type de ressource.
Vous pouvez trouver des polices disponibles sur https://www.1001fonts.com/ , puis extraire les fichiers TTF dans ce répertoire de polices.
Enfin, modifiez simplement le fichier XML qui contient votre affichage de texte en ajoutant android: fontFamily: "@ font / urfontfilename"
la source
app:fontFamily=
cependant, tout le reste est le même.Une façon simple consiste à ajouter la police souhaitée dans le projet.
Allez dans Fichier-> Nouveau-> Nouveau répertoire de ressources Sélectionnez la police
Cela créera un nouveau répertoire, une police , dans vos ressources.
Téléchargez votre police (.ttf) . J'utilise https://fonts.google.com pour les mêmes
Ajoutez cela à votre dossier de polices puis utilisez-les dans le XML ou par programme.
XML -
Par programmation -
la source
ResourcesCompat.getFont
méthode d' utilisationla source
Si vous souhaitez utiliser un TextView dans de nombreux endroits avec la même famille de polices, étendez la classe TextView et définissez votre police comme ceci: -
Et puis utilisez cette classe personnalisée en xml pour le TextView comme ceci: -
la source
Si vous utilisez Android Studio 3.5+, le changement de police est super simple. Sélectionnez le widget de texte en mode Création et cochez fontFamily dans la fenêtre d'attributs. La liste déroulante des valeurs contient toutes les polices disponibles à partir desquelles vous pouvez en sélectionner une. Si vous recherchez des polices Google, cliquez sur l'option Plus de polices.
Fenêtre d'attribut
Google Fonts
la source
Je veux juste mentionner que l'enfer avec les polices dans Android est sur le point de se terminer, car cette année sur Google IO, nous avons finalement obtenu ceci -> https://developer.android.com/preview/features/working-with-fonts. html
Maintenant, il y a un nouveau type de ressource une police et vous pouvez placer toutes vos polices d'application dans le dossier res / fonts et y accéder ensuite avec R.font.my_custom_font, tout comme vous pouvez accéder aux valeurs de chaîne res, aux valeurs res dessinables , etc. Vous avez même la chance pour créer un fichier xml font-face , qui va être défini avec vos polices personnalisées (à propos de l'italique, du gras et du soulignement attr).
Lisez le lien ci-dessus pour plus d'informations. Voyons voir le soutien.
la source
Redman
la réponse de l'utilisateur ci-dessus est toujours une partie nécessaire de la solution.Il y a une belle bibliothèque disponible pour cela
la source
La nouvelle ressource de police permet de définir directement en
font
utilisantla source
Vous définissez le style
res/layout/value/style.xml
comme ça:et pour utiliser ce style dans l'
main.xml
utilisation des fichiers:la source
Pour android-studio 3 et supérieur, vous pouvez utiliser ce style, puis tout
textView
les changements de police dans l'application.créez ce style dans votre
style.xml
:Ensuite, utilisez-le dans votre thème:
la source
La façon la plus simple d'ajouter la police par programme à un TextView est, tout d'abord, d'ajouter le fichier de police dans votre dossier Assets dans le projet. Par exemple, votre chemin de police ressemble à ceci:
assets/fonts/my_font.otf
Et ajoutez-le à une TextView en tant que:
Kotlin
Java
la source
Ici, vous pouvez voir toutes les valeurs disponibles de fontFamily et les noms des fichiers de polices correspondants (ce fichier est utilisé dans Android 5.0+). Dans un appareil mobile, vous pouvez le trouver dans:
(Pour Android 4.4 et inférieur utilisant cette version, mais je pense que cela
fonts.xml
a un format plus clair et facile à comprendre.)Par exemple,
L'attribut name
name="sans-serif"
defamily
tag a défini la valeur que vous pouvez utiliser dans android: fontFamily.La
font
balise définit les fichiers de police correspondants.Dans ce cas, vous pouvez ignorer la source sous
<!-- fallback fonts -->
, elle utilise pour la logique de secours des polices.la source