2010-09-15 50 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")