等宽字体和自定义字体(Marshmallow)

时间:2016-06-01 12:22:23

标签: java android xml fonts

我最近制作了一个带有ASCII艺术的角色扮演游戏,自从安卓5.0以后,艺术就搞砸了。

我使用自定义字体显示它,用以下内容定义:

Typeface face= Typeface.createFromAsset(getAssets(),"fonts/courier.ttf");
    etiqPlateau.setTypeface(face);

我使用了android:fontFamily =" monospace"在xml中设置但看起来像java代码中定义的TypeFace会覆盖xml设置。是否可以在xml中定义字体的属性或至少定义5.0+中等宽字体的使用?救命啊!

In Android 4.4(图片)

In Android 6.0(图片)

编辑 - 即使我在XML上使用android:fontfamily而没有设置字体,android 5.0+也会混淆monospace字体。

1 个答案:

答案 0 :(得分:0)

你也可以试试这个

public static class FontCache {

    private static HashMap<String, Typeface> fontCache = new HashMap<>();

    public static Typeface getTypeface(String fontname, Context context) {
        Typeface typeface = fontCache.get(fontname);

        if (typeface == null) {
            try {
                typeface = Typeface.createFromAsset(context.getAssets(), fontname);
            } catch (Exception e) {
                return null;
            }

            fontCache.put(fontname, typeface);
        }

        return typeface;
    }
}
  

字体customFont = FontCache.getTypeface(&#34;您的自定义下载   font.ttf&#34;,clContext);

code snippet:
Typeface customFont = FontCache.getTypeface("chyga.ttf", clContext);
yourTextView.setTypeface(customFont);