web-dev-qa-db-fra.com

Comment utiliser la police Roboto dans Android Project

J'ai développé un projet Android. Dans ce projet, la police de texte par défaut est Android: sans.

Maintenant, je souhaite remplacer la police de texte par défaut par roboto pour l'ensemble de mon projet.

Comment puis-je faire ceci?

50
Jeeva

Vous pouvez télécharger la police Roboto à partir d'ici: https://www.google.com/design/spec/resources/roboto-noto-fonts.html .

Vous pouvez le faire de manière conventionnelle en utilisant TypeFace, comme ceci:

Typeface typeface = Typeface.createFromAsset(getAssets(), fontName);
textView.setTypeface(typeface);

Remarque: Ce qui précède devra être effectué dans chaque Activity.

Alternativement, si, par exemple, vous souhaitez appliquer la police Roboto à tous les caractères TextView's dans votre application, vous devrez alors créer votre propre widget qui s'étend sur TextView.

Il y a un moyen simple de le faire. Suivez les étapes de cette réponse à SO: https://stackoverflow.com/a/9199258/450534 (accessoires complets à léocadiotine pour la solution, je l'ai déjà utilisé et ça marche à merveille)

EDIT: Pensez à your_namespace comme marqueur pour vous permettre de lui donner le nom de votre choix. Par exemple, lors de l'intégration d'Admob en XML, j'utilise xmlns:ads. Vous pouvez utiliser, par exemple: xmlns:font ou quelque chose de descriptif.

Quant à ce que signifie custom.ttf, il s’agit essentiellement du fichier de police avec son extension que vous devez copier dans votre dossier Assets. Par exemple, si vous utilisez ROBOTO-REGULAR.TTF , remplacez le custom.ttf par ROBOTO-REGULAR.TTF. En utilisant cet exemple, le code entier devrait ressembler à ceci:

<your.package.widget.TypefacedTextView
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:font="http://schemas.Android.com/apk/res/your.package"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:text="Custom fonts in XML are easy"
    Android:textColor="#FFF"
    Android:textSize="14dip"
    font:typeface="ROBOTO-REGULAR.TTF" />
64
Siddharth Lele
  1. Télécharger et décompressez le fichier Zip de la police Roboto

  2. Créez un dossier assets dans votre projet si vous n'en avez pas déjà. Je suppose que vous utilisez Android Studio, voici comment procéder. enter image description here

  3. Créez un nouveau répertoire dans le dossier assets, nommez-le font.

  4. Ouvrez votre fichier décompressé et copiez le style de police de votre choix. Votre dossier de police devrait ressembler à ceci:

enter image description here

Vous pouvez maintenant utiliser cette police n'importe où dans votre application comme ceci:

   Typeface roboto = Typeface.createFromAsset(context.getAssets(), 
  "font/Roboto-Bold.ttf"); //use this.getAssets if you are calling from an Activity
   txtView.setTypeface(roboto);
22
ojonugwa ochalifu

Vous pouvez le faire facilement en utilisant le Typerlib .

Cette bibliothèque simplifie l'ajout d'une ressource de police dans votre projet et recycle les polices récemment créées afin d'optimiser les performances de votre application.

Ajoutez ceci à votre build.gradle

dependencies {
    compile 'com.elmargomez.typer:typerlib:1.0.0'
}

Ensuite, vous pouvez utiliser la police par

TextView txtView1 = (TextView) findViewById(R.id.yourTxtView1);
TextView txtView2 = (TextView) findViewById(R.id.yourTxtView2);
TextView txtView3 = (TextView) findViewById(R.id.yourTxtView3);
TextView txtView4 = (TextView) findViewById(R.id.yourTxtView4);

txtView1.setTypeface(Typer.set(yourContext).getFont(Font.ROBOTO_REGULAR));
txtView2.setTypeface(Typer.set(yourContext).getFont(Font.ROBOTO_CONDENSED_ITALIC));
txtView3.setTypeface(Typer.set(yourContext).getFont(Font.ROBOTO_THIN));
txtView4.setTypeface(Typer.set(yourContext).getFont(Font.ROBOTO_BOLD));

Il comprend toutes les polices actuelles dans Roboto, comme:

    Font.ROBOTO_MEDIUM
    Font.ROBOTO_REGULAR
    etc.

Pour afficher toutes les polices disponibles, utilisez Android Studio Auto complète après la classe Police en appuyant sur Ctrl + space.

6
Enzokie
txtView = (TextView) findViewById(R.id.txtView);

Typeface myTypeface = Typeface.createFromAsset(
                          this.getAssets(),
                          "font/Robot.otf");

txtView.setTypeface(myTypeface);
6
Ketan Ahir

Encore une remarque pour l'utilisation de la fonction Typeface.createFromAsset(). Quand j'ai eu beaucoup d'appels, cela a eu un impact significatif sur le temps de gonflage. Pour résoudre ce problème, nous avons créé une instance singleton du Typeface comme ceci

public static Typeface getTypeFace() {
        if (fromAsset == null) {
            fromAsset = Typeface.createFromAsset(getContext().getAssets(), "fonts/Roboto-Medium.ttf");
        }
        return fromAsset;
    }
3
Szabolcs Becze