web-dev-qa-db-fra.com

Problème lors de l'utilisation d'une police personnalisée - "les polices ne peuvent pas être créées"

J'essaie d'utiliser une police trouvée sur Internet, mais le problème est que je reçois un FC avec "une police de caractères native ne peut pas être créée".

Voici le code dans le getView de mon ListVIew:

        holder.tv_SuraName   =(TextView)convertView.findViewById(R.id.Start_Name);
        holder.tv_SuraName.setTypeface(Typeface.createFromAsset(mContext.getAssets(), "suralist_font.ttf"));

Quelqu'un peut-il me dire pourquoi je peux utiliser la rom personnalisée? Vous pouvez l'obtenir ICI .. le fichier est .ttf

49
Omar

Le fichier de police est soit corrompu ou non pris en charge pour une raison quelconque. Vous pouvez le déposer sur la carte SD et le charger à partir d'un fichier pour vous assurer que vos ressources ne posent pas problème.

36
Nikolay Elenkov

Mon problème était le mauvais placement du dossier des actifs. 

Lorsque vous utilisez Android Studio, le dossier des ressources doit se trouver dans les jeux de sources, par exemple 

src/main/assets /

Trouvé dans cette réponse

48
roelvogel

Il y a fondamentalement 4 choses qui peuvent causer ceci:

  1. Vous utilisez la mauvaise extension
  2. Vous devez placer les polices dans le dossier des actifs et pas dans assets/fonts /
  3. Vous avez mal orthographié les polices
  4. Les polices doivent être en minuscules (dans mon cas, la solution consistait à renommer MyFont.ttf en myfont.ttf, étrange).
28
erdomester

Vérifiez que l'extension n'est pas en majuscule, c'est-à-dire. suralist_font.TTF

Les polices semblent souvent venir de cette façon et il est possible que l’on oublie.

21
tlrmcknz

J'ai eu ce même problème, j'ai créé le mien dans assets> fonts> what.ttf et obtenais la même erreur. J'ai ajouté l'extension fonts (fonts/what.ttf) et le problème a été résolu dans tous les cas. 

 holder.tv_SuraName   =(TextView)convertView.findViewById(R.id.Start_Name);
 holder.tv_SuraName.setTypeface(Typeface.createFromAsset(mContext.getAssets(),    "fonts/suralist_font.ttf"));
9
a54studio

Un fil plutôt ancien, mais je souhaite ajouter une raison supplémentaire à cela: vous devez définir la vue du contenu avant d'appeler la police. Voir exemple ci-dessous

Est-ce que pas fonctionne:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        TextView title = (TextView)findViewById(R.id.tvTitle);
        Typeface font = Typeface.createFromAsset(this.getAssets(), "fonts/whatever.ttf");
        title.setTypeface(font);

        setContentView(R.layout.main);
    }

Ça marche!

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main); // <-- call before typeface

        TextView title = (TextView)findViewById(R.id.tvTitle);
        Typeface font = Typeface.createFromAsset(this.getAssets(), "fonts/whatever.ttf");
        title.setTypeface(font);
    }
2
Alina B.

J'utilise Android studio, dans mon cas, le problème était lié au chemin du dossier des ressources. Dans Eclipse, le chemin du dossier des ressources est res/assets/mais dans Android Studio, il src/main/assets/. Alors, je viens de déplacer mon fichier de police sur ce chemin et finalement le problème est résolu.

2
Rahul Sharma

Soit votre fichier de police est corrompu, soit vous faites une erreur d’orthographe lorsque vous appelez votre nom de fichier. J'ai eu le même problème, c'est parce que le nom de fichier spécifié dans le dossier de ressources était 

roboto_black.ttf

et tout en déclarant dans un fichier Java, je l’épelais ainsi:

roboto_blak.ttf

Si vos fichiers .ttf se trouvent dans le dossier des ressources, utilisez:

Typeface type_bold = Typeface.createFromAsset(getAssets(), "roboto_black.ttf");

Sinon s'il se trouve dans le dossier des polices, utilisez:

type_bold = Typeface.createFromAsset(getAssets(), "fonts/roboto_black.ttf");

J'espère que ça aide!

1
Abhilasha Sharma

Veuillez noter que cela est dû à un fichier corrompu ou si vous avez placé le fichier dans le mauvais dossier.

Selon la documentation Android ici

main/atouts / Ceci est vide Vous pouvez l'utiliser pour stocker des fichiers d'actifs bruts. Les fichiers que vous enregistrez ici sont compilés dans un fichier .apk tel quel, et le nom de fichier d'origine est préservé. Vous pouvez naviguer dans ce répertoire de la même manière qu'un système de fichiers classique utilisant des URI et lire des fichiers sous forme de flux d'octets à l'aide de AssetManager. Par exemple, c’est un bon emplacement pour les textures et les données de jeu.

Par conséquent, la structure de votre dossier devrait être votremodule/main/assets (par exemple, un *** pp/main/assets ***)

0
d4c0d312

J'espère que cela aidera

Typeface.createFromAsset perd le flux d'actifs: http://code.google.com/p/Android/issues/detail?id=9904

0
Pawan Maheshwari

Comme le dit CommonsWare dans cette réponse

Je suppose qu'il y a un problème avec la police elle-même. Cette erreur sera déclenché lorsque le code natif du système d'exploitation tente de charger le fichier police de caractère.

Quoi qu'il en soit essayez celui-ci:

holder.tv_SuraName = (TextView)convertView.findViewById(R.id.Start_Name);
Typeface Font = Typeface.createFromAsset(this.getAssets(),"suralist_font.ttf");
holder.tv_SuraName.setTypeface(Font);
0
Mr.James

J'ai eu le même problème qui s'est produit sur Android 4.0.3-4.0.4 (reproductible à 100% sur l'émulateur IceCreamSandwich mips 4.0.3). 

Le problème était que les polices TTF que j’avais n’étaient pas correctes, bien que presque toutes les versions d’Android aient été en mesure de charger ces polices TTF. J'ai donc utilisé https://cloudconvert.com/woff-to-ttf (puisque j'avais également des fichiers woff) pour créer de nouvelles polices TTF, ce qui a résolu mon problème.

0
negersiu

J'ai toujours débogué sur cette erreur dans Android Studio. Nettoyer et reconstruire le projet après avoir ajouté les polices au répertoire des actifs a résolu le problème pour moi.

0
RuudJ

Ce qui a bien fonctionné pour moi a d’abord été de changer le nom de ma police de police en minuscules et sous soulignés: de Amatic-Sc.ttf à amatic_sc.ttf

Ensuite, dans la méthode set.TypeFace, modifiez assets/fonts/amatic_sc.ttf en juste fonts/amatic_sc.ttf .

0
David JavaNab

Vient de faire un build --> clean et le rendu a commencé. 

0
Anukool

J'ai eu le même problème avec COMIC.TTF de comic sans ms de Windows . Puisque le fichier original que j'ai placé dans le dossier assets/fonts était en majuscule comme indiqué ci-dessus, je devais le saisir exactement en majuscule . Typeface.createFromAsset (getAssets (), "fonts/COMIC.TTF");

il se trouve que le problème est dû à la minuscule: Typeface.createFromAsset (getAssets (), "fonts/comic.ttf");

0
Olumide Oyetoke