2010-09-15 76 views
3

我想在TextView中使用自定义字体:自定义字体在Android的

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

但是当我跑我得到以下错误:

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

请告诉我这个问题?

+3

可能重复:http://stackoverflow.com/questions/3203694/custom-fonts-in-android/3203724#3203724 – Praveen 2010-09-15 11:19:19

+0

@Paresh:任何资源(R.id.foo) – 2010-09-15 11:56:38

+0

@Praveen:我猜测它的代码相同。但我仍然得到这个运行时异常 – 2010-09-15 11:59:53

回答

2

我猜想,字体本身存在问题。当操作系统中的本机代码尝试加载字体时,将触发该错误。我似乎记得,如果文件丢失,还有一个不同的消息,所以我认为它找到该文件,但由于某种原因不喜欢它。

11

对我来说,这绝对是我收到的消息,当字体文件无法找到。事情就这么简单:

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

当我的字体竟是字体/ MYFONT.TTF

2

我曾经遇到过这样的问题,我用的构造函数设置自定义布局类中的字体是传递给一个参考父母活动的“上下文”并将其设置为:

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

它给我“本地字体无法制作”错误。

继续从头开始只显示创建一个新的测试项目进行的“Hello World”,与自定义字体我想用,所以我在默认的活动类这样做对的onCreate():

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

,这一次它的工作,我想,也许我应该尝试把主要活动的参考,而不是背景下我的自定义布局类:

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

现在这个时候制作的自定义布局类。希望这也能帮助你们。

+0

它给我错误:( – 2013-04-16 16:29:19

+0

字体font = Typeface.createFromAsset(this.getAssets(),“fonts/font.ttf”);为我工作 – 2013-10-16 15:03:41

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

第一。它区分大小写&可能全部大写。例如。

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