définir la police à L'exécution, Textview

Comment définir la police sur textview, qui est créée à 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?? égard shishir

34
demandé sur Marek Sebera 2010-08-14 15:45:05

7 réponses

Pour définir la police intégrée au moment de L'exécution:

  • Tout d'Abord, Pour Changer la Police face, un Police de caractères la classe est utilisée.

  • Maintenant, at Run-Time, pour définir le type de police, Utilisation setTypeface(Typeface) à partir du code Java

  • at Design-Time, pour définir le type de police, Utilisation 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 des polices personnalisées dans votre application Android

Pour ce faire, créez simplement un assets / dossier dans la racine du projet, et mettez vos polices (dans TrueType, ou TTF, form) dans les assets. Vous pouvez, par exemple, créer assets/fonts/ et mettez vos fichiers TTF là-dedans:

  TextView tv=(TextView)findViewById(R.id.custom); 
  Typeface face=Typeface.createFromAsset(getAssets(), "fonts/HandmadeTypewriter.ttf"); 
  tv.setTypeface(face); 
62
répondu Paresh Mayani 2011-11-03 09:34:32

Vous pouvez avoir .police ttf dans votre fichier actif. Dites que le nom de la police est "default".ttf " et vous devez maintenant écrire en dessous de 2 lignes de code

TextView text = new TextView(this);
text.setTypeface(Typeface.createFromAsset(getAssets(), "default.ttf"));

Vous devez également nous prudent parce que la police différente ont des tailles différentes. Vous devrez peut-être définir la taille comme:

text.setTextSize(20);
3
répondu Dilroop Singh 2014-04-08 00:21:40

Voici une petite classe d'utilité

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 choses comme Spinner S ou ListView s (c'est-à-dire tout type de AdapterView) qui génèrent leurs enfants à partir d'un adaptateur, vous devrez définir la police de caractères 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 au besoin et que la définition de Typeface dans onCreate ne fonctionnera pas correctement.

2
répondu Joseph Earl 2013-01-06 15:37:50

Vous devez utiliser Caractères:

  1. ajoutez la police que vous souhaitez utiliser à votre projet en tant qu'actif.
  2. Créer un objet de police en utilisant cette police:

    Typeface myFont = Typeface.createFromAsset(getAssets(), "fonts/MyFont.ttf");

  3. Définissez la police de caractères sur l'objet que vous souhaitez personnaliser:

    TextView myTextView = (TextView)findViewById(R.id.my_text_view); myTextView.setTypeface(myFont);

1
répondu Asahi 2015-10-21 15:16:34

Avec l'introduction de polices en XML dans Android 8.0 (rétrocompatible à partir de la version API 14) Il est très facile de définir la police à partir de xml lui-même.

De la documentation android:

Android 8.0 (API niveau 26) introduit une nouvelle fonctionnalité, polices en XML, ce qui vous permet d'utiliser des polices comme ressources. Vous pouvez ajouter le fichier de police dans le dossier res / font / pour regrouper les polices en tant que ressources. Ces polices sont compilé dans votre fichier R et sont automatiquement disponibles dans Android Studio. Vous pouvez accéder aux ressources de police à l'aide d'un nouveau type de ressource, la police. Par exemple, pour accéder à une ressource de police, utilisation @font / myfont, ou R. font.myfont.

Tout d'Abord créer un Android Répertoire des Ressources dans res dossier nommé comme police
Ajouter votre .fichier de police ttf dans 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 ainsi que ses détails de style et de poids. Dans Android, vous pouvez créez une nouvelle famille de polices en tant que ressource XML et accédez-y en tant qu'unité unique, au lieu de référencer chaque style et chaque poids en tant que ressources distinctes. Ce faisant, le système peut sélectionner la police correcte 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 police et accédez à nouveau > fichier de ressources de police. Le Une nouvelle fenêtre de fichier de ressources apparaît.
  2. entrez le nom du fichier, et puis cliquez sur OK. La nouvelle ressource de police XML s'ouvre dans l'éditeur.
  3. Enfermez chaque fichier de police, style et attribut de poids dans le <font> élément. Le XML suivant illustre l'ajout de polices attributs dans la ressource de police 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>

, Puis utiliser 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"/>
1
répondu Rahul Sharma 2018-01-22 11:30:13

Dynamiquement, vous pouvez définir la fontfamily similaire à 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));

Ce sont la liste des police par défaut famille utilisée, utilisez tout cela en remplaçant la chaîne de guillemets doubles "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. Chemin sera dans src/assets/fonts/mycustomfont.ttf

0
répondu anand krish 2017-07-26 12:58:01

Vous pouvez utiliser le code suivant pour définir votre texte à une police spécifique au moment de l'exécution. Appelez simplement la méthode setViewGroupFont à la fin de votre méthode Activity onCreate ou chaque fois que vous créez dynamiquement de nouvelles vues:

private static final String FONT_NAME = "fonts/Roboto-Regular.ttf";
private static Typeface m_font = null;

public static Typeface getFont(Context p_context)
{
    if (null == m_font && null != p_context)
    {
        m_font = Typeface.createFromAsset(p_context.getApplicationContext().getAssets(), FONT_NAME);
    }
    return m_font;
}

public static void setViewGroupFont(ViewGroup p_viewGroup)
{
    if (null != p_viewGroup)
    {
        for (int currChildIndex = 0; currChildIndex < p_viewGroup.getChildCount(); currChildIndex++)
        {
            View currChildView = p_viewGroup.getChildAt(currChildIndex);

            if (ViewGroup.class.isInstance(currChildView))
            {
                setViewGroupFont((ViewGroup) currChildView);
            }
            else
            {
                try
                {
                    Method setTypefaceMethod = currChildView.getClass().getMethod("setTypeface", Typeface.class);

                    setTypefaceMethod.invoke(currChildView, getFont(p_viewGroup.getContext()));
                }
                catch (NoSuchMethodException ex)
                {
                    // Do nothing
                }
                catch (Exception ex)
                {
                    // Unexpected error setting font
                }
            }
        }
    }
}
-2
répondu Muzikant 2012-07-22 08:10:47