RuntimeException: natif de police ne peut être faite ou de fuite de mémoire pour personnalisé TextView chargement de la police
Il y a un ÉNORME problème dans mon code où je suis le chargement d'une police dans mon assets\fonts\
dossier à partir d'un personnalisé TextView
classe. Le premier problème, c'est qu'il se bloque sur 4.0 appareils à l'exception Caused by: java.lang.RuntimeException: native typeface cannot be made
. J'ai été en utilisant le même processus ici de la méthode:
public class MyTextView extends TextView {
public MyTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public MyTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyTextView(Context context) {
super(context);
}
public void setTypeface(Typeface tf, int style) {
if (style == Typeface.BOLD) {
super.setTypeface(Typeface.createFromAsset(
getContext().getAssets(), "fonts/hirakakupronbold.ttf"));
} else if (style == Typeface.ITALIC) {
super.setTypeface(Typeface.createFromAsset(
getContext().getAssets(), "fonts/hirakakupronitalic.ttf"));
} else {
super.setTypeface(Typeface.createFromAsset(
getContext().getAssets(), "fonts/hirakakupron.ttf"));
}
}
}
Avis que je suis en utilisant l'extension .ttf
, et j'ai trouvé que c'est la cause la RunTimeException
. Donc j'ai converti les polices respectives avec un .otf
extensions, et maintenant, il fonctionne déjà dans la version 4.0 appareils, mais a des fuites de mémoire en fondant ici. Il existe des solutions de contournement ici mais je ne sais pas comment l'utiliser/l'appeler. Toute aide serait faire, je vous remercie.
OriginalL'auteur Compaq LE2202x | 2014-01-06
Vous devez vous connecter pour publier un commentaire.
Ok, donc j'ai enfin compris que l'instanciation d'un
TypeFace
objet à l'intérieur d'unTextView
classe serait la cause de beaucoup de charger à chaque fois la mêmeTextView
est instancié. Ce la cause de mon application à la traîne et a abouti àOutOfMemoryException
finalement. Donc, ce que j'ai fait était de créer une personnalisée différentsTypeFace
classe qui ferait appel à mes polices de l'actif, de sorte qu'il instancie de laTypeFace
classe, et non pas à partir de laTextView
classe.Voici mes Polices de caractères classe:
Et la coutume TextView classe:
Avis que j'ai maintenant l'appel
getTypeFace
méthode deTypeFaces
classe ici.OriginalL'auteur Compaq LE2202x
Si vous rencontrez ce problème sur Android Studio puis mettez vos actifs sous répertoire principal au lieu de le mettre sous répertoire res.
Aussi dans la police de nommage utilisez des lettres minuscules et des caractères de soulignement uniquement, par exemple, my_font.ttf
Qui a travaillé comme un charme pour moi
OriginalL'auteur Toochka
Si vous êtes l'extension de ce point de vue, xml, puis essayez de l'utiliser de cette façon::
}
Sa fonctionne très bien pour moi. Faire classe à part l'extension de TextView pour chaque style de caractères.pour l'appliquer, remplacer votre "TextView" avec "com.yourpackage.MyTextView"
Ce qui concerne,
OriginalL'auteur prashantwosti
Dans mon cas, le préfixe d'espace de noms XML que j'ai utilisé pour mon affichage personnalisé (ro) n'était pas à droite:
Tout ce que j'avais à faire est de changer pour
& il a travaillé.
OriginalL'auteur Mohammed Aouf Zouag