使用的特定自定义字体在Android应用程序中不起作用

时间:2014-11-10 10:26:21

标签: android fonts

我在文本视图中使用DIEHL DECO字体。我的代码中的类文件如下所示。应用程序正在运行而没有任何错误,但显示的字体是默认字体。字体不会更改为我正在使用的字体文件。 我尝试使用另一个字体文件,代码运行良好,但对于此特定字体运行不佳。不明白这个问题是什么。请帮帮我。

public class MyTextView extends TextView{

    public MyTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);

    }

    public MyTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
       }

    public MyTextView(Context context) {
        super(context);

    }

    public void setTypeface(Typeface tf, int style) {
        if (style == Typeface.BOLD) {
            super.setTypeface(TypeFaces.getTypeFace(getContext(),
                    "fonts/DIEHLD_.ttf"));
        } else if (style == Typeface.ITALIC) {
            super.setTypeface(TypeFaces.getTypeFace(getContext(),
                    "fonts/DIEHLD_.ttf"));
        } else {
            super.setTypeface(TypeFaces.getTypeFace(getContext(),
                    "fonts/DIEHLD_.ttf"));
        }
    }

}

这是字体类

public class TypeFaces {
    private static final Hashtable<String, Typeface> cache = new Hashtable<String, Typeface>();

    public static Typeface getTypeFace(Context context, String assetPath) {
        synchronized (cache) {
            if (!cache.containsKey(assetPath)) {
                try {
                    Typeface typeFace = Typeface.createFromAsset(
                            context.getAssets(), assetPath);
                    cache.put(assetPath, typeFace);
                } catch (Exception e) {
                    Log.e("TypeFaces", "Typeface not loaded.");
                    return null;
                }
            }
            return cache.get(assetPath);
        }
    }
}

2 个答案:

答案 0 :(得分:1)

如果您在assets文件夹中创建了fonts文件夹,请使用assets / fonts / DIEHLD_.ttf。

答案 1 :(得分:0)

我假设您将所有字体放在&#34; fonts&#34;文件夹,位于项目的assets文件夹中。

字体tf = Typeface.createFromAsset(mContext.getAssets(),&#34; fonts / DIEHLD_.ttf&#34;);                 this.setTypeface(TF);