Utilisation d'une police personnalisée
YameFAZE
Messages postés
204
Statut
Membre
-
BunoCS Messages postés 16550 Statut Modérateur -
BunoCS Messages postés 16550 Statut Modérateur -
Bonjour,
J'aimerais utiliser une police personnalisée pour mon appli. J'ai vu pas mal de tutos sur internet qui reprennent plus ou moins la même méthode, une méthode lourde, déclarer la police pour chaque View où il y a du texte. Un gros s'il y a 50 View avec du texte dans le Layout il faut préciser les 50 Id de chaque View... long. Il n'y a pas une méthode plus simple pour appliquer la police personnalisée sur l'ensemble de l'appli ?
J'aimerais utiliser une police personnalisée pour mon appli. J'ai vu pas mal de tutos sur internet qui reprennent plus ou moins la même méthode, une méthode lourde, déclarer la police pour chaque View où il y a du texte. Un gros s'il y a 50 View avec du texte dans le Layout il faut préciser les 50 Id de chaque View... long. Il n'y a pas une méthode plus simple pour appliquer la police personnalisée sur l'ensemble de l'appli ?
A voir également:
- Utilisation d'une police personnalisée
- Utilisation chromecast - Guide
- Télécharger gratuitement notice d'utilisation - Guide
- Sonnerie personnalisée android - Guide
- Changer police facebook - Guide
- Police aptos - Accueil - Bureautique
13 réponses
Merci je vais y jeter un coup d'oeil. J'ai le cerveau qui bouillonne d'idées et chaque idée apporte son lot de questionnement et de recherche et d'appels à l'aide. Cela fait une semaine que je suis bloqué sur la première activité de mon appli, seulement parce que je dois penser à faire le design. J'espère qu'une fois que ce sera fait j'avancerai un peu plus vite...
J'ai le cerveau qui bouillonne d'idées et chaque idée apporte son lot de questionnement et de recherche et d'appels à l'aideQue cela ne t'empêches pas de chercher par toi-même ;)
Bon... je n'arrive pas à comprendre comment ça fonctionne... ça fait 1h que j'y suis. Le problème c'est qu'il y a plein de bouts de code dans l'explicatif et je n'arrive pas à savoir s'il faut faire toutes les étapes de l'explicatif (ce qui serait quand même assez lourd en terme d'écriture), ou bien s'il s'agit de plusieurs méthodes différentes, et bien sûr il y a des termes techniques que j'ai du mal à traduire en français donc difficile pour moi de comprendre le sens des explications.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Il n'y a pas tant que ça de code à écrire...
Si tu veux que tous tes textes soient dans ta police custom:
- tu places ton fichier de police dans le rep "assets/fonts"
- dans ta classe
- dans chaque
@+
Buno, Modo CS-CCM
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
The urgent is done, the impossible is underway. For miracles, provide for a delay...
Si tu veux que tous tes textes soient dans ta police custom:
- tu places ton fichier de police dans le rep "assets/fonts"
- dans ta classe
application, tu mets ceci:
@Override
public void onCreate() {
super.onCreate();
setupCalligraphy();
}
private void setupCalligraphy() {
CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
.setDefaultFontPath("fonts/ton_fichier.ttf")
.setFontAttrId(R.attr.fontPath)
.build()
);
}
- dans chaque
Activity(ou mieux, dans une Activity parente):
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
}
@+
Buno, Modo CS-CCM
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
The urgent is done, the impossible is underway. For miracles, provide for a delay...
Salut,
Visiblement Android Studio a un problème avec
Ensuite je ne vois pas ce que tu veux dire par placer le code dans la classe
Visiblement Android Studio a un problème avec
CalligraphyConfig,
fontPath,
Context newBaseet
CalligraphyContextWrapper. Tous ces termes sont en rouge et il ne me propose aucun solution.
Ensuite je ne vois pas ce que tu veux dire par placer le code dans la classe
application. Dans quel fichier et à quel niveau du code source ? Pareil pour ton second bout de code. Je dois faire quelque chose comme ci-dessous ?
package com.xxxxxxxxxx;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
public class Inscription extends AppCompatActivity
{
@Override
public void onCreate() {
super.onCreate();
setupCalligraphy();
}
private void setupCalligraphy() {
CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
.setDefaultFontPath("fonts/3.ttf")
.setFontAttrId(R.attr.fontPath)
.build()
);
}
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.inscription_activity);
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
}
}
}
J'ai oublié de préciser qu'il fallait rajouter une ligne dans ton Gradle pour pourvoir importer la lib.
Tu aurais pu le trouver tout seul, ça ;) Et ne pas oublier les import qui vont bien.
Ensuite, au niveau de l'application, il te faut étendre la classe Application afin de pouvoir rajouter tes initialisations diverses, dont Calligraphy.
Dans le Manifest, il faut modifier la balise application
Enfin, au lieu de "copier bêtement", une simple relecture t'aurait montré que tu as mis la déclaration de
@+
Buno, Modo CS-CCM
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
The urgent is done, the impossible is underway. For miracles, provide for a delay...
compile 'uk.co.chrisjenx:calligraphy:2.2.0'
Tu aurais pu le trouver tout seul, ça ;) Et ne pas oublier les import qui vont bien.
Ensuite, au niveau de l'application, il te faut étendre la classe Application afin de pouvoir rajouter tes initialisations diverses, dont Calligraphy.
import android.app.Application;
public class MyCustomApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
setupCalligraphy();
}
private void setupCalligraphy() {
CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
.setDefaultFontPath("fonts/ton_fichier.ttf") // ici, il faut indiquer le nom de ton fichier de police qui se trouve dans le répertoire 'assets'
.setFontAttrId(R.attr.fontPath)
.build()
);
}
}
Dans le Manifest, il faut modifier la balise application
<application android:name=".MyCustomApplication" android:icon="@drawable/icon" android:label="@string/app_name" ...>
Enfin, au lieu de "copier bêtement", une simple relecture t'aurait montré que tu as mis la déclaration de
attachBaseContext()dedans le
onCreate()! ça ne risque pas de compiler...
@+
Buno, Modo CS-CCM
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
The urgent is done, the impossible is underway. For miracles, provide for a delay...
Salut,
Bon décidément je ne sais pas si je vais réussir un jour à installer cette foutue police perso... c'est pas croyable de galérer autant juste pour installer une simple police. J'ai un nouveau souci. J'ai modifié le Gradle, synchronisé, et voilà ce qu'Android Studio m'affiche comme message d'erreur.

Bon décidément je ne sais pas si je vais réussir un jour à installer cette foutue police perso... c'est pas croyable de galérer autant juste pour installer une simple police. J'ai un nouveau souci. J'ai modifié le Gradle, synchronisé, et voilà ce qu'Android Studio m'affiche comme message d'erreur.

Tu vas finir par croire que je suis débile... bon, reprenons tout depuis le début, alors...
Dans le fichier java j'ai importé tous les packages :
Dans l'activité principale du fichier java j'ai déclarer ça :
Juste après l'accolade fermante de
J'ai modifié le gradle aussi. J'ai modifié aussi le manifest :
Dans le fichier java j'ai importé tous les packages :
package com.alexandredubus.helloweride;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import uk.co.chrisjenx.calligraphy.CalligraphyConfig;
import uk.co.chrisjenx.calligraphy.CalligraphyContextWrapper;
Dans l'activité principale du fichier java j'ai déclarer ça :
//!\\ Déclaration de l'activité. //!\\
public class Index extends AppCompatActivity
{
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
}
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setupCalligraphy();
//!\\ Affichage de la page. //!\\
setContentView(R.layout.index_activity);
Juste après l'accolade fermante de
@Override public void onCreate(Bundle savedInstanceState) { j'ai déclaré ça :
private void setupCalligraphy() {
CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
.setDefaultFontPath("fonts/3.ttf") // ici, il faut indiquer le nom de ton fichier de police qui se trouve dans le répertoire 'assets'
.setFontAttrId(R.attr.fontPath)
.build()
);
}
J'ai modifié le gradle aussi. J'ai modifié aussi le manifest :
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xxxxxxxxxx">
<application
android:name=".MyCustomApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".Index">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Inscription" />
<activity android:name=".Start" />
</application>
</manifest>
MyCustomApplicationapparaît en rouge dans le manifest. D'habitude j'arrive à comprendre les cours et à les adapter à mon projet mais là... enfin bref.
Hello,
Reprends calmement depuis le début:
Sur le GitHub, il y a un projet d'exemple. L'as-tu regardé?
Avec l'exemple plus le code que je te donne ici, là, je ne vois pas ce que je peux faire de plus, à part coder par moi-même ;)
Reprends calmement depuis le début:
Dans l'activité principale du fichier java j'ai déclarer ça :Non! Le
setupCalligraphy()doit être dans la classe
Applicationet non dans l'
Activity.
Sur le GitHub, il y a un projet d'exemple. L'as-tu regardé?
Avec l'exemple plus le code que je te donne ici, là, je ne vois pas ce que je peux faire de plus, à part coder par moi-même ;)
Tu vas finir par croire que je suis débile...Non, rassures-toi..Mais je pense que tu ne cherches pas assez ;)
De quelle classe
Applicationparles-tu ? Je n'ai pas de classe
Applicationdans mon projet. C'est un fichier JAVA, XML, ou autre ? C'est un fichier que je dois créer ou qui existe ? C'est ça que je ne comprends pas. Depuis le début en fait je me contente de modifier le JAVA de mon Activity "Index.java", le layout associé "index_activity.xml", le gradle et le manifest... mais il y a encore un autre fichier à modifier ?
Tu dois créer une classe Application pour pouvoir initialiser Calligraphy.
Je te l'ai dit ici et c'est écrit dans la doc ici.
Pour le code Java concernant cette classe, tu as un exemple ici
Pour voir le Manifest associé, c'est ici
Le sample complet ici
Je te l'ai dit ici et c'est écrit dans la doc ici.
Pour le code Java concernant cette classe, tu as un exemple ici
Pour voir le Manifest associé, c'est ici
Le sample complet ici