Mot de passe Android createFromAsset

j'ai une vue personnalisée qui dessine du texte sur la toile. Je veux changer la à une Police stockée dans le dossier des actifs.

J'utilise Android Studio donc j'ai créé un dossier src/main/assets et y ai placé mes fichiers ttf.

Paint txt = new Paint()
Typeface font = Typeface.createFromAsset(getAssets(), "robotobold.ttf");
txt.setTypeface(font);

le problème est que Android Studio ne reconnaît pas getAssets () dans ma vue personnalisée, cependant il le reconnaît dans mon activité. J'ai essayé de passer la typographie de mon activité mais quand je le fais il ne change pas le police.

24
demandé sur Caleb Bramwell 2013-08-26 08:39:30
la source

7 ответов

Vous pouvez utiliser votre ViewgetContext() méthode pour obtenir le courant Context, puis l'utiliser pour obtenir le actif:

Typeface font = Typeface.createFromAsset(getContext().getAssets(), "robotobold.ttf");
48
répondu Phil 2013-08-26 08:43:43
la source

tout d'Abord, vous devez garder votre assets dossier à l'intérieur de votre project et non pas à l'intérieur de src/main.. Et puis, créez un dossier appelé fonts à l'intérieur assets. Ensuite, mettez la police de caractèrettf files à l'intérieur.Vous pouvez utiliser la police de caractère dans le codage comme:

Typeface type = Typeface.createFromAsset(getAssets(),"fonts/filename.ttf");
textview.setTypeface(type);
23
répondu Kavin 2013-08-26 09:14:20
la source

créé un dossier src/main/actifs et placé les fichiers de police.

Activité

Typeface font = Typeface.createFromAsset(getAssets(),  "Mukta-Regular.ttf");
tv.setTypeface(font);

du Fragment

Typeface.createFromAsset(getActivity().getAssets(), "Mukta-Regular.ttf");
tv.setTypeface(font);
3
répondu Sudhir singh 2018-08-29 12:26:19
la source

afin de réutiliser les polices de caractères dans mes projets, je crée une classe pleine de méthodes de polices de caractères, de cette façon je n'ai pas à créer une nouvelle police de caractères à chaque fois.

j'appelle la classe FontClass et dans la classe il y a une méthode pour chaque police de caractère que je dois utiliser E. g:

public static Typeface getOpenSansRegular(Context c){
    return Typeface.createFromAsset(c.getAssets(), "OpenSans-Light.ttf");
}

Ensuite, je peux les utiliser comme ceci:

TextView text = (TextView) findViewById(R.id.textview);
text.setTypeface(FontClass.getOpenSansRegular(getApplicationContext());
1
répondu MichaelStoddart 2016-09-07 12:29:29
la source

Vous devez placer votre dossier des actifs dans le dossier "Projet" et pas dans le "src" dossier. Vous avez placé votre police dans le "src/main/assets / robotobold.ttf c'est pourquoi il n'est pas de travail. Vous devez le placer comme ceci "/assets/robotobold.ttf".

0
répondu arshu 2013-08-26 09:02:41
la source
    Typeface robo = Typeface.createFromAsset(getActivity().getAssets(), "fonts/Roboto-Thin.ttf");
0
répondu Rohit 2014-08-28 18:52:57
la source

Mon erreur a été d'ajouter la ligne

Typeface mFont = Typeface.createFromAsset(this.getAssets(), "abc.ttf");

avant onCreate ()

0
répondu makkuzu 2016-09-22 10:52:19
la source

Autres questions sur