我已经阅读过有关在Android中使用字体的所有SO帖子,但我仍然无法让我的工作。我得到以下例外:
java.lang.RuntimeException: native typeface cannot be made
这是我的代码(此类和静态方法取自here):
public class SafeTypefaces {
private static final Hashtable<String, Typeface> cache = new Hashtable<String, Typeface>();
public static Typeface get(Context c) {
final String assetPath = "fonts/robotobold.ttf";
synchronized (cache) {
if (!cache.containsKey(assetPath)) {
try {
AssetManager assetManager = c.getAssets();
Typeface t = Typeface.createFromAsset(assetManager, assetPath); //Throws exception on this line!
cache.put(assetPath, t);
} catch (Exception e) {
L.p("Could not get typeface '" + assetPath + "' because " + e.getMessage());
return null;
}
}
return cache.get(assetPath);
}
}
}
字体位于assets/fonts
文件夹中:
(这仍然是Eclipse。我知道,我知道)。
我尝试的事情:
assets
文件夹的根目录并更新assetPath
。答案 0 :(得分:1)
当我创建这个问题时,我遇到了解决方案。我已经花了几个小时这个,所以我觉得值得保留。
我的问题是我正在从事图书馆项目。根据这个(Android Library assets folder doesn't get copied),库项目中的资源不可用于主项目,这就是找不到字体文件的原因。 (同样,这个项目仍在使用Eclipse。可能不是使用Gradle + AS的情况。)
解决方案是将字体复制到主项目中,瞧!