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
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.
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
Il y a fondamentalement 4 choses qui peuvent causer ceci:
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.
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"));
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);
}
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.
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!
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 ***)
J'espère que cela aidera
Typeface.createFromAsset perd le flux d'actifs: http://code.google.com/p/Android/issues/detail?id=9904
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);
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.
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.
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 .
Vient de faire un build --> clean
et le rendu a commencé.
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");