Comment définir la police sur textview, créée au moment de l'exécution?
j'ai créé textview
Textview tv = new TextView(this);
tv.setTextSize(20);
comme je peux changer la taille
Je veux définir le style de police sur "Verdana".
Comment faire cela ?? Salutations Shishir
Tout d'abord, pour changer de police, un police de caractères classe est utilisé.
Maintenant, at Run-Time
, pour définir la fonte, utilisez setTypeface(Typeface)
à partir du code Java
at Design-Time
, pour définir la police, utilisez Android:typeface="serif"
Par exemple:
<TextView Android:text="@+id/TextView01"
Android:id="@+id/TextView01"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:textSize="30px"
Android:textStyle="italic"
Android:typeface="serif" />
Pour ce faire, créez simplement un actif/dossier dans la racine du projet et placez vos polices (sous la forme TrueType ou TTF) dans les actifs. Vous pouvez, par exemple, créer assets/fonts/
et y placer vos fichiers TTF:
TextView tv=(TextView)findViewById(R.id.custom);
Typeface face=Typeface.createFromAsset(getAssets(), "fonts/HandmadeTypewriter.ttf");
tv.setTypeface(face);
Vous pouvez avoir la police .ttf dans votre dossier de ressources. Dites que le nom de la police est "default.ttf" et que vous venez d'écrire en dessous de 2 lignes de code
TextView text = new TextView(this);
text.setTypeface(Typeface.createFromAsset(getAssets(), "default.ttf"));
Vous devez également faire attention car les différentes polices ont des tailles différentes. Vous devrez peut-être définir la taille comme suit:
text.setTextSize(20);
Avec l'introduction de Fonts in XML dans Android 8.0 (rétrocompatible avec l'API version 14), il est très facile de définir la police à partir du XML.
De la documentation Android:
Android 8.0 (API niveau 26) introduit une nouvelle fonctionnalité, Polices in XML, qui vous permet d'utiliser des polices en tant que ressources. Vous pouvez ajouter le fichier de police dans le dossier/police/dossier pour regrouper les polices en tant que ressources. Ces polices sont compilés dans votre fichier R et sont automatiquement disponibles dans Android Studio. Vous pouvez accéder aux ressources de polices à l'aide d'un nouveau fichier type de ressource, police. Par exemple, pour accéder à une ressource de police, utilisez @ font/myfont ou R.font.myfont.
Commencez par créer un répertoire de ressources Android dans le dossier res
portant le nom font.
Ajoutez votre fichier de police .ttf à ce répertoire, puis créez une famille de polices.
Une famille de polices est un ensemble de fichiers de polices avec ses détails de style et de poids. Sous Android, vous pouvez créer une nouvelle famille de polices en tant que ressource XML et y accéder en tant qu'unité unique, au lieu de référencer chaque style et poids en tant que ressources séparées. En procédant ainsi, le système peut sélectionner la police appropriée en fonction du style de texte que vous essayez d'utiliser.
Pour créer une famille de polices, procédez comme suit dans Android Studio:
Incluez chaque fichier de police, style et attribut de poids dans l'élément <font>
Le code XML suivant illustre l’ajout d’attributs Liés à la police dans la ressource XML:
<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:Android="http://schemas.Android.com/apk/res/Android">
<font
Android:fontStyle="normal"
Android:fontWeight="400"
Android:font="@font/lobster_regular" />
<font
Android:fontStyle="italic"
Android:fontWeight="400"
Android:font="@font/lobster_italic" />
</font-family>
Ensuite, utilisez le code suivant pour définir la police dans votre textView
comme
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:fontFamily="@font/lobster"/>
Voici une petite classe utilitaire
public class TypefaceHelper {
public static void setViewGroupTypeface(ViewGroup container, Typeface typeface) {
final int children = container.getChildCount();
for (int i = 0; i < children; i++)
View child = container.getChildAt(i);
if (child instanceof TextView) {
setTextViewTypeface((TextView) child, typeface);
} else if (child instanceof ViewGroup) {
setViewGroupTypeface((ViewGroup) child, typeface);
}
}
}
public static void setTextViewTypeface(TextView textView, Typeface typeface) {
textView.setTypeface(typeface);
}
}
Pour des éléments tels que Spinner
s ou ListView
s (c'est-à-dire tout type de AdapterView
) générant leurs enfants à partir d'un adaptateur, vous devrez définir le type de caractère de chaque élément View
dans la méthode getView
(ou similaire) de l'adaptateur. Cela est dû au fait que les vues peuvent être créées selon les besoins et que définir Typeface
dans onCreate
ne fonctionnera pas correctement.
Dynamiquement, vous pouvez définir une police de caractères similaire à celle d’Android: fontFamily en xml en utilisant ceci,
For Custom font:
TextView tv = ((TextView) v.findViewById(R.id.select_item_title));
Typeface face=Typeface.createFromAsset(getAssets(),"fonts/mycustomfont.ttf");
tv.setTypeface(face);
For Default font:
tv.setTypeface(Typeface.create("sans-serif-medium",Typeface.NORMAL));
Voici la liste depolice par défautfamille utilisée, remplacez-la par la chaîne de guillemet double "sans-serif-medium"
FONT FAMILY TTF FILE
1 casual ComingSoon.ttf
2 cursive DancingScript-Regular.ttf
3 monospace DroidSansMono.ttf
4 sans-serif Roboto-Regular.ttf
5 sans-serif-black Roboto-Black.ttf
6 sans-serif-condensed RobotoCondensed-Regular.ttf
7 sans-serif-condensed-light RobotoCondensed-Light.ttf
8 sans-serif-light Roboto-Light.ttf
9 sans-serif-medium Roboto-Medium.ttf
10 sans-serif-smallcaps CarroisGothicSC-Regular.ttf
11 sans-serif-thin Roboto-Thin.ttf
12 serif NotoSerif-Regular.ttf
13 serif-monospace CutiveMono.ttf
"mycustomfont.ttf" est le fichier ttf.Pathsera dans src/assets/fonts/mycustomfont.ttf