“Natif de caractères ne peut pas être fait” seulement pour certaines personnes
J'ai une application qui modifie la police de caractères pour certains éléments. Il fonctionne bien pour la plupart des gens, mais peut-être de 0,5% à obtenir une exception lorsque vous tentez de modifier la police. La partie importante de la trace de la pile est: est-ce
Caused by: java.lang.RuntimeException: native typeface cannot be made
at android.graphics.Typeface.<init>(Typeface.java:147)
at android.graphics.Typeface.createFromAsset(Typeface.java:121)
Comme je l'ai dit, cela fonctionne pour la plupart des gens, donc je ne pense pas que c'est un problème avec le fichier de police ou de mon code. Toutes les suggestions sur comment résoudre ce problème?
Edit: C'est mon code:
Typeface phoneticFont = Typeface.createFromAsset(getAssets(),
"fonts/CharisSILR.ttf");
TextView tv;
tv = ((TextView) findViewById(R.id.searchPronunciationTitle));
tv.setTypeface(phoneticFont);
- Placez votre code ici.
- J'ai mis à jour la question avec le code.
- où votre mettre votre fichier ttf.
- Dans les actifs/fonts
- quelle est la version d'android à partir de laquelle vous obtenez cette erreur? Je l'ai eu à partir d'un GT-i9000, 2.3.6
- J'ai eu dans les versions d'Android 2.2 et 2.2.2
- Avez-vous vu <karanbalkar.com/2013/07/...>? c'est un moyen simple d'ajouter de la police roboto dans l'application android.
- Pour moi, c'était un supérieur inférieur cas de problème.
- J'ai vérifié et toutes les lettres sont exactement égales dans le code et dans le nom du fichier.
- comment avez-vous enfin résoudre ce problème?
- Unfourtunately, je ne pouvais pas le réparer.
- J'ai ajouté ma réponse ici : la typographie de l'erreur
- Je pense que votre réponse ne s'applique pas à mon cas, car si c'était l'erreur que vous avez suggéré, il n'y aurait jamais de travail; mais dans mon cas, ça fonctionne la plupart du temps.
Vous devez vous connecter pour publier un commentaire.
Ce bug d'Android OS pourrait être la raison de votre problème:
La police de caractères.createFromAsset fuites d'actifs flux de
Où sont également une solution de contournement dans ce rapport de bogue:
Typefaces
avec androidsvg de la bibliothèque, où je charge plusieurs polices à l'aide de laSVGExternalFileResolver
.J'ai suivi certaines des solutions trouvées ici, sans succès. Je pensais que c'était une chose vraiment obscure, que les programmeurs font souvent. Puis j'ai lu quelque part qu'il pourrait être lié à la police de chemin, gotcha:
Au lieu de:
J'ai changé pour:
Et mon fichier est en actifs/fonts/blanch_caps.ttf. Non il fonctionne comme un charme!
createFromFile
Cette erreur est survenue lorsque la police était dans la bibliothèque des actifs de dossier. Quand j'ai copié les actifs de l'application qui a été l'utilisation de cette bibliothèque, l'erreur a disparu.
Il semble que les actifs ne peuvent pas être importés:
Android éléments de la Bibliothèque de dossier n'est pas d'avoir copié
Et voici quelques autres cas: Problème lors de l'utilisation d'une police personnalisée - "natif de caractères ne peut pas être fait"
getAssets()
pas de bibliothèque ... +1 a fonctionné pour moi .J'ai eu du mal avec ce beaucoup. J'ai essayé toutes les possibilités et rien n'y fait. En fin de compte, le problème était ailleurs. Si vous construisez votre projet avec Gradle, n'oubliez pas d'ajouter ces lignes dans la construction.gradle fichier. Cela a résolu le problème dans mon cas.
build.gradle
, mais j'ai eu à mettre mon dossier des actifs, directement sous la main (eg.src\main\assets
)Vous devez créer actifs dossier à l'intérieur src-->principal dans AndroidStudio. De cette manière travaillé!
Dans mon cas, il était basé sur le nom de fichier de la police. Pour une raison quelconque, il a été nommé FontName..ttf
Je ne sais pas pourquoi le double des points là - bas- j'ai regardé la police d'origine et qu'ils étaient dans mon dossier windows\fonts que FontName..ttf. Windows n'a apparemment pas de soins, mais Android flippé. J'ai renommé le fichier, et il est tout heureux maintenant.
Pour mon cas, j'ai trouvé que le actifs se trouve dans le dossier
/main/java/assets
mais ils doivent être en/main/assets
Faire avec moins de cas:
N'oubliez pas de renommer le fichier.
Je viens de tomber sur ce problème quand j'utilise le MagicTextView par qwerjk. J'ai essayé de mettre le MTV classe dans une bibliothèque et de l'utiliser dans mon projet principal. Voici comment je l'ai eu à travailler:
En principal de mon projet, j'ai gonflé le MTV vue de xml. Assurez-vous que le MagicTextView pointe vers le bon chemin de la bibliothèque. Par exemple, mon MTV bibliothèque de classe a com.de la bibliothèque.library_magictextview.MagicTextView et donc, ma principale de la vue xml eu à lire:
Dans notre situation, nous avait employé Frappé de la solution avec le cache. Le problème que nous avons introduit est que nous avons tests pour la FTO fichiers ET les fichiers TTF dans le même bloc try 😉 ce Qui est évidemment voué à l'échec à la première tentative de la FTO, si vous cherchez à obtenir une TTF, mais j'ai pensé qu'il vaut la peine de poster JUSTE au cas où il a glissé passé de quelqu'un préavis alors qu'ils pourraient essayer de faire la même solution.
Dans mon cas, j'ai juste supprimé le dossier assets (que j'ai créé manuellement) et venez de créer un nouveau à l'aide de l'assistant. Apparemment, il n'a pas lu le dossier des actifs, mais le lire comme un dossier normal et donc getAssets() n'a pas fonctionné et m'a donné l'erreur.
dans android studio: quels ont travaillé pour moi, c'est de mettre la ttf fichier directement dans le dossier actifs sans un sous dossier de polices , il n'a pas de travail avec le sous-dossier ( (getAssets(),"fonts/oldengl.ttf") n'a pas fonctionné quand j'ai eu la ttf dans le répertoire src/main/assets/fonts).
ceci fonctionne :
src/main/assets/oldengl.ttf
Police de caractères customfont=la Police de caractères.createFromAsset(getAssets(),"oldengl.ttf");
J'ai été couru à ce problème lorsque j'ai importé un module qui était destiné à soutenir à la fois l'éclipse style des projets et android de type studio de projet.
J'ai obtenu mon problème s'est résolu en supprimant les actifs de la source est définie comme
Ou de la conversion du projet dans android studio de style peut également résoudre le problème, je suppose.
Dans mon cas,
Je viens d'utiliser le code précédent.. Donc j'oublie le fichier de police dans le dossier des actifs..
Mais je ne peux pas comprendre pour 2 heures..
Cas possibles pour cette erreur,
ex: fonts/roboto.ttf au lieu de fonts/roboto.la fto