我在我的应用中使用了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已经解决了这个问题。
答案 0 :(得分:2)
在5.1之前的Lollipop版本中,使用API Typeface.createFromAsset()
加载的某些自定义字体无法使用正确的字体呈现。此问题已在Android 5.1发布时修复,但仍会影响运行Android Lollipop 5.0.x.
请尝试转换您的" .TTF"提交给" .OTF"文件。就我而言,它帮助我解决了这个问题。