FontAwesome图标未显示在Android App

时间:2015-09-25 09:59:26

标签: java android user-interface font-awesome genymotion

我在我的应用中使用了FontAwesome图标。特别是在一些TextViews中。由于我想在某些特定的文本视图中,我做了一个自定义文本视图。

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);
    }
}

当我使用它并添加一个关闭图标时,它会在带有API 18的Genymotion模拟器上完美显示,但是当我在带有API 21的手机上运行应用程序时,它们无法正确显示或显示十字架。 / p>

导致此错误的原因是什么?任何修复?

固定

问题出在API上。已知Android 5.0.x存在此问题。如下面的答案所述,通过将TTf转换为OTF来修复它。 (在某些情况下可能还不行。)Android 5.1.x已经解决了这个问题。

1 个答案:

答案 0 :(得分:2)

在5.1之前的Lollipop版本中,使用API​​ Typeface.createFromAsset()加载的某些自定义字体无法使用正确的字体呈现。此问题已在Android 5.1发布时修复,但仍会影响运行Android Lollipop 5.0.x.

的应用用户

请尝试转换您的" .TTF"提交给" .OTF"文件。就我而言,它帮助我解决了这个问题。