2010-09-15 9 views
3

Je suis en train d'utiliser des polices personnalisées dans un textview:polices personnalisées dans Android

tv=(TextView)findViewById(res); 
Typeface font = Typeface.createFromAsset(this.getAssets(), "fonts/font.ttf"); 
tv.setTypeface(font); 

Mais quand je cours, je reçois l'erreur suivante:

W/System.err( 542): java.lang.RuntimeException: native typeface cannot be made 

Quelle est la question?

+3

double possible: http://stackoverflow.com/questions/3203694/custom-fonts-in-android/3203724#3203724 – Praveen

+0

@Paresh: Toute ressource (R.id.foo) –

+0

@Praveen: I devinez c'est le même code. Mais encore, je reçois cette exception d'exécution –

Répondre

2

Je suppose qu'il y a un problème avec la police elle-même. Cette erreur sera déclenchée lorsque le code natif dans le système d'exploitation tente de charger la police. Il me semble me rappeler qu'il y a un message différent si le fichier est manquant, donc je pense que c'est trouver le fichier mais ne pas l'aimer pour une raison quelconque.

11

Pour moi, c'était certainement le message que j'ai reçu quand le fichier de police n'a pas pu être trouvé. Quelque chose d'aussi simple que:

Typeface.createFromAsset(getContext().getAssets(), "fonts/MYFONT.TTF"); 

Quand ma police était en fait dans la police/MYFONT.TTF

2

j'avais rencontré ce problème que je mettais la police de caractères dans une classe de mise en page personnalisée avec un constructeur qui passe une référence à "contexte" de l'activité parent et la mise en place comme ceci:

Typeface font = Typeface.createFromAsset(this.getAssets(), "fonts/font.ttf"); 

il me donne "erreur de caractères natifs ne peut être faite" erreur.

est allé sur la création d'un nouveau projet de test à partir de zéro pour afficher uniquement le « Bonjour tout le monde, » avec la police personnalisée je veux utiliser donc je l'ai fait sur onCreate() de la classe d'activité par défaut:

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

et cette fois cela a fonctionné et je pensais que peut-être que je devrais essayer de mettre une référence de l'activité principale plutôt que le contexte de ma classe personnalisée de mise en page:

Typeface font = Typeface.createFromAsset(activity.getAssets(), "fonts/font.ttf"); 

maintenant cette fois-ci a travaillé sur la classe de mise en page personnalisée. J'espère que cela vous aidera aussi.

+0

il me donne l'erreur :( –

+0

Type de police font = Typeface.createFromAsset (this.getAssets(), "fonts/font.ttf"); travail pour moi –

0
public class Harshida extends View { 

Bitmap gBall; 
float changingY; 
Typeface font; 
public Harshida(Context context) { 
    super(context); 
    // TODO Auto-generated constructor stub 
    gBall=BitmapFactory.decodeResource(getResources(), R.drawable.greenball); 
    changingY=0; 
    font=Typeface.createFromAsset(context.getAssets(), "assets/G-Unit.TTF"); 
} 
@Override 
protected void onDraw(Canvas canvas) { 
    // TODO Auto-generated method stub 
    super.onDraw(canvas); 
    canvas.drawColor(Color.WHITE); 

    Paint textPaint=new Paint(); 
    textPaint.setARGB(50,254,10,50); 
    textPaint.setTextAlign(Align.CENTER); 
    textPaint.setTextSize(50); 
    textPaint.setTypeface(font); 
    canvas.drawText("HarshidaParmar",canvas.getWidth()/2,200,textPaint); 
    //canvas.drawBitmap(gBall,(canvas.getWidth()/2),0,null); 
    canvas.drawBitmap(gBall,(canvas.getWidth()/2),changingY,null); 
    if(changingY < canvas.getHeight()){ 
     changingY +=10; 
    }else { 
     changingY=0; 
    } 
    Rect middleRect= new Rect(); 
    middleRect.set(0, 40, canvas.getWidth(),400); 
    //middleRect.set(0,0,0,0); 
    Paint ourBlue = new Paint(); 
    ourBlue.setColor(Color.BLUE); 
    canvas.drawRect(middleRect, ourBlue); 
    //canvas.drawRect(middleRect,ourBlue); 
    invalidate(); 

} 

} 
3

d'abord le nom et l'extension de toutes les polices de contrôle. il est sensible à la casse & probablement toutes les majuscules. par exemple.

Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/ABADDON.TTF") 
Questions connexes