306 votes

Comment changer la police de caractères d'un TextView ?

Comment changer la police de caractères dans un TextView Par défaut, c'est Arial qui s'affiche ? Comment le changer en Helvetica ?

350voto

CommonsWare Points 402670

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 fonction android:typeface dans la présentation XML ou setTypeface() en 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 intégrer vos propres polices de caractères à votre application et les utiliser par l'intermédiaire de setTypeface() Les fichiers de polices de caractères sont volumineux et, dans certains cas, nécessitent des accords de licence (par ex, Helvetica, une police Linotype ).

EDIT

Le langage de conception d'Android repose sur tels que l'échelle, l'espace, le rythme et l'alignement sur une grille sous-jacente. Le déploiement réussi de ces outils est essentiel pour aider les utilisateurs à à comprendre rapidement un écran d'information. Pour favoriser cette utilisation de la typographie, Ice Cream Sandwich a introduit typographie, Ice Cream Sandwich a introduit une nouvelle famille de caractères appelée Roboto, créée spécifiquement pour répondre aux exigences de l'interface utilisateur et des écrans haute résolution. et des écrans haute résolution.

Le cadre actuel de TextView offre Rob et gras, ainsi qu'un style italique pour chaque graisse. Le cadre propose également le style Roboto et en gras, ainsi qu'un style italique pour chaque graisse.

Après ICS, Android inclut le style de police Roboto, En savoir plus Roboto

EDIT 2

Avec l'avènement de la bibliothèque de support 26, Android peut désormais offrir des services de support aux utilisateurs. par défaut. Vous pouvez insérer de nouvelles polices dans res/fonts qui peuvent être définies individuellement pour les TextViews, soit en XML, soit par programmation. La police par défaut pour l'ensemble de l'application peut également être modifiée en la définissant dans le fichier styles.xml. La documentation destinée aux développeurs Android contient un guide clair à ce sujet. aquí

256voto

HjK Points 1266

Téléchargez d'abord le .ttf de la police dont vous avez besoin ( arial.ttf ). Placez-la dans le assets dossier. (Dans le dossier assets, créer un nouveau dossier nommé polices de caractères et le placer à l'intérieur). Utilisez le code suivant pour appliquer la police à votre TextView :

Typeface type = Typeface.createFromAsset(getAssets(),"fonts/arial.ttf"); 
textView.setTypeface(type);

52voto

Android Girl Points 695
Typeface tf = Typeface.createFromAsset(getAssets(),
        "fonts/DroidSansFallback.ttf");
TextView tv = (TextView) findViewById(R.id.CustomFontText);
tv.setTypeface(tf);

34voto

Daniel L. Points 1687

Vous pourriez vouloir créer classe statique qui contiendra toutes les polices. De cette manière, vous ne créerez pas la police plusieurs fois, ce qui pourrait avoir des conséquences néfastes sur la qualité de l'information. performance . Veillez simplement à créer un sous-dossier appelé " polices de caractères " sous " actifs dossier ".

Faites quelque chose comme :

public class CustomFontsLoader {

public static final int FONT_NAME_1 =   0;
public static final int FONT_NAME_2 =   1;
public static final int FONT_NAME_3 =   2;

private static final int NUM_OF_CUSTOM_FONTS = 3;

private static boolean fontsLoaded = false;

private static Typeface[] fonts = new Typeface[3];

private static String[] 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.
 */
public static Typeface getTypeface(Context context, int fontIdentifier) {
    if (!fontsLoaded) {
        loadFonts(context);
    }
    return fonts[fontIdentifier];
}

private static void 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 caractères partout dans votre application.

17voto

harikris Points 2074

Les réponses ci-dessus sont correctes. Veillez simplement à créer un sous-dossier appelé "fonts" dans le dossier "assets" si vous utilisez ce morceau de code.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X