web-dev-qa-db-fra.com

définir la police au moment de l'exécution, Textview

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

35
iscavengers

Pour définir les polices intégrées au moment de l'exécution:

  • 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 définir les polices personnalisées dans votre application Android

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); 
63
Paresh Mayani

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);
3
Dilroop Singh

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.

Créer 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:

  1. Cliquez avec le bouton droit sur le dossier de polices et accédez à Nouveau> Fichier de ressources de polices. La fenêtre Fichier de ressourcesNew apparaît.
  2. Entrez le nom du fichier, puis cliquez sur OK. La nouvelle ressource de police de caractères XML S'ouvre dans l'éditeur.
  3. 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"/>
2
Rahul Sharma

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 Spinners ou ListViews (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.

2
Joseph Earl

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

0
anand krish