2015-09-25 78 views
1

我在我的應用程序中使用了FontAwesome圖標。特別是在一些TextViews中。由於我想在某些特定的文本視圖中,我做了一個自定義文本視圖。FontAwesome圖標未顯示在Android應用程序中[已修正]

public class FontAwesomeTextView extends TextView { 

    public FontAwesomeTextView(Context context) { 
     super(context); 
    } 

    public FontAwesomeTextView(Context context, AttributeSet attributeSet) { 
     super(context, attributeSet); 
    } 

    public FontAwesomeTextView(Context context, AttributeSet attributeSet, int style) { 
     super(context, attributeSet, style); 
    } 

    @Override 
    public void setTypeface(Typeface tf, int style) { 
     String fontPath = "fonts/fontawesome.ttf"; 
     Typeface typeFace = Typeface.createFromAsset(getContext().getAssets(), fontPath); 
     this.setTypeface(typeFace); 
    } 
} 

當我使用它並添加關閉圖標,它就會完全顯示在Genymotion仿真器API 18,但是當我在我的手機上運行的應用程序與API 21,他們不能正確顯示或者顯示十字架。

是什麼導致了這個錯誤?任何修復?提前致謝。


注意 問題出在API上。 Android 5.0.x已知有此問題。正如下面的答案所提到的,通過將TTf轉換爲OTF來修復它。 (在某些情況下可能不起作用。)已知Android 5.1.x已經解決了這個問題。

+0

你可以在你設置字體/文本的地方發佈代碼嗎?運行Api 18的Genymotion圖像上的圖標是否正確顯示? – fractalwrench

+0

@fractalwrench你好,我找到了修復。它在下面發佈爲答案。不過謝謝。 :) –

回答

2

在5.1之前的Lollipop版本中,使用API​​ Typeface.createFromAsset()加載的一些自定義字體不會使用正確的字體進行渲染。此問題已在Android 5.1發佈時修復,但仍可能影響運行Android的應用用戶Lollipop 5.0.x.

請嘗試將「.TFF」文件轉換爲「.OTF」文件。在我的情況下,它幫助我解決了這個問題。

+0

謝謝!就是這個。 –

相關問題