- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我有一个应用程序可以更改某些元素的字体。它适用于大多数人,但可能有 0.5% 的人在尝试更改字体时会出现异常。堆栈跟踪的重要部分是:
Caused by: java.lang.RuntimeException: native typeface cannot be made
at android.graphics.Typeface.<init>(Typeface.java:147)
at android.graphics.Typeface.createFromAsset(Typeface.java:121)
正如我所说,它适用于大多数人,所以我认为字体文件或我的代码没有问题。有关如何解决此问题的任何建议?
编辑:这是我的代码:
Typeface phoneticFont = Typeface.createFromAsset(getAssets(),
"fonts/CharisSILR.ttf");
TextView tv;
tv = ((TextView) findViewById(R.id.searchPronunciationTitle));
tv.setTypeface(phoneticFont);
最佳答案
Android 操作系统的这个错误可能是您的问题的原因:
Typeface.createFromAsset leaks asset stream
此错误报告中还有哪些解决方法:
I altered HTH's workaround so that the method does not assume the font path or format. The full path of the font asset must be submitted as a parameter. I also wrapped the call to createFromAsset() in a try-catch block so that the get() method will return null if the asset is not found.
public class Typefaces {
private static final String TAG = "Typefaces";
private static final Hashtable<String, Typeface> cache = new Hashtable<String, Typeface>();
public static Typeface get(Context c, String assetPath) {
synchronized (cache) {
if (!cache.containsKey(assetPath)) {
try {
Typeface t = Typeface.createFromAsset(c.getAssets(),
assetPath);
cache.put(assetPath, t);
} catch (Exception e) {
Log.e(TAG, "Could not get typeface '" + assetPath
+ "' because " + e.getMessage());
return null;
}
}
return cache.get(assetPath);
}
}
}
关于android - "Native typeface cannot be made"仅适用于某些人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12766930/
在我的应用程序中,我有一个 textView,用户可以在其中设置字体和字体样式。我正在使用这一行来设置字体。 tvQuoteTextSample.setTypeface(Typeface.SERIF)
字体始终显示默认字体。 我的字体存储在 Assets /字体中。我尝试过使用其他字体,并重新编码字体。 PixlUI 库也没有解决问题。 MainActivity.java protected voi
在我的应用程序中,我从服务器动态下载字体并将它们保存到数据库中。有什么方法可以从 db 中的 blob 创建 Typaface 吗?当然我可以创建临时文件并从中加载数据,但这不是最好的方法 最佳答案
鉴于以下 react 代码: import React, { Component } from 'react'; import ReactDOM from 'react-dom'; import 't
我已经使用 Typeface.js 转换了一些字体,默认字体 Century Gothic 工作正常。但是现在我正在尝试使用我上传的 Century Gothic Bold,但我不知道确切的名称是什么
我正在制作必须以“NASTALIQ.TTF”字体显示文本的 Android 应用程序。我将字体 ttf 文件放在项目的以下目录中: C:\Users\Zeeshan\AndroidStudioProj
简单的问题:Typeface.createFromAsset() 是否缓存?还是我应该在内存中保留一个引用以方便使用?我问的原因是因为我经常使用它(都是为了在许多 Activity/ View 中维护
我使用自定义字体绘制( Canvas )文本(准确地说:我使用自定义字体)。然而,这种字体不支持很多字符,因此一些(不受支持的)字符看起来不同。现在我问自己以下问题: 不受支持的角色看起来如何 - 外
在开始 Activity 中,我调用 FontFactory.init(getApplicationContext()); 将 Context 设置为 FontFactory 类。 我还有扩展 Tex
我正在尝试在我的 NotificationCompat.Builder 中添加一个 Typeface ->setContentTitle() 和 setContentText()。我通过 初始化了 T
我想更改对话框中 textview 中的字体: dialog = new Dialog(MyActivity.this); dialog.setContentView(R.layout.my_dial
如何在 NumberPicker 中更改字体类型。我尝试这样做,但字体没有改变。任何想法?P.S: color 和 textSize 有变化。 public class NumberPicker ex
我正在尝试在 ListView 的元素上使用自定义字体。所以在我的 ListViewAdapter 构造函数中我有: private Context context; private List pro
Typeface 类包含一个静态的 findFromCache 方法: https://android.googlesource.com/platform/frameworks/base/+/refs
我的应用程序因以下代码而崩溃。我正在尝试在 textView 中提供自定义字体。 Assets 目录没问题,因为我已经仔细检查过了。 @Override protected void onCreate
所以我有这个界面: public interface Utils{ static final Typeface FONT = Typeface.createFromAsset(getAsset
我在整个应用程序中都使用 Helvetica 字体。目前我正在与 Assets 分开创建字体。所以我说了这三个 HelveticaNeue = Typeface.createFromAsset(app
我想将 TextView 上的第一个字符设置为 TypeFace,将第二个字符设置为不同的 Type face,依此类推。 我读了这个例子: Spannable str = (Spannable) t
我正在尝试使用我在互联网上找到的字体,但问题是我得到了一个带有“无法制作原生字体”的 FC。 这是我的 ListVIew 的 getView 中的代码: holder.tv_SuraN
我有一个应用程序可以更改某些元素的字体。它适用于大多数人,但可能有 0.5% 的人在尝试更改字体时会出现异常。堆栈跟踪的重要部分是: Caused by: java.lang.RuntimeExcep
我是一名优秀的程序员,十分优秀!