8

我有一些文本,其中有一些粗体部分。直到 KitKat 这个策略(如本文所述)运作良好

我的字符串资源文件:

<string name="multi_style_text">NON-BOLD TEXT \n<b>BOLD</b></string>

我在片段中的应用程序代码:

txtView.setTypeface(FontUtils.getOstrichRegular(this.getActivity()));
...
public static Typeface getOstrichRegular(Context context) {
   return Typeface.createFromAsset(context.getAssets(),
                                "fonts/ostrich_regular.ttf");
}

目前(在 KitKat 中),粗体部分不以自定义字体显示,非粗体部分以自定义字体显示。在以前的 Android 版本中,所有文本都以自定义字体显示。

是什么赋予了?

4

5 回答 5

22

因此,在对这个错误感到沮丧之后,我四处搜索并找到了解决问题的方法。在我当前的项目中,我们使用 calibri.ttf 字体。直到 4.4 都可以正常工作。一旦我更新了我的nexus 4,所有带有Calibri字体的TextViews都显示“ff”而不是整个文本。

修复 - 获取字体的 .otf(开放式字体)版本,并将其放入项目中,就像魅力一样。太糟糕了,谷歌没有就此通知开发人员,而且关于此事的文档很少。

于 2013-12-09T08:25:14.410 回答
2

显然这是KitKat 中的一个错误,并已在内部树中修复

于 2013-11-20T22:15:36.963 回答
0

将您的自定义字体放在文件夹名称“font”或您想要的任何内容下的android资产中

尝试这个

myTypeface = Typeface.createFromAsset(this.getAssets(),
            "fonts/<<your font>>.ttf");

onCreate()那时_

[use youcontroll].setTypeface(myTypeface);

祝你好运...

于 2014-09-03T11:45:58.010 回答
0

我通过将我的 file.ttf 转换为 file.otf 解决了这个问题

替换:

Typeface typeface = Typeface.createFromAsset(activity.getAssets(), "fonts/ostrich_regular.ttf");
yourTextView.setTypeface(typeface);

经过 :

Typeface typeface = Typeface.createFromAsset(activity.getAssets(), "fonts/ostrich_regular.otf");
yourTextView.setTypeface(typeface);

仅供参考:.otf 格式适用于所有 android 版本(不仅在 kitkat 上)

于 2015-04-23T15:08:12.183 回答
0

经过数小时搜索 robots.otf(2014 年)后,我明白这是一个错误。只需从https://www.fontsquirrel.com/fonts/roboto-2014下载一个普通的 ttf 字体并复制到 assets 文件夹,然后使用 setTypeface。您也可以使用任何网站将其转换为 otf。

于 2016-09-06T22:54:33.753 回答