android:无法设置自定义字体

Posted

技术标签:

【中文标题】android:无法设置自定义字体【英文标题】:android: not able to set custom font 【发布时间】:2014-06-16 16:47:57 【问题描述】:

我尝试在 TextView 中设置自定义字体。

因此,我将 otf 文件复制到 /src/main/assets/fonts 中,并将以下部分添加到我在 Activity 中的 onCreate 中:

TextView tv = (TextView) findViewById(R.id.profil_fullname);
Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/MavenProLight-100.otf");
    tv.setTypeface(tf);

但它不起作用。我没有收到任何错误,应用程序可以正常工作,但字体不是预期的字体。我必须将资产文件夹添加到我的 build.gradle 吗?!

EDIT1: 我将字体名称更改为 MavenProLight.tff(我还将它转换为 truetype 字体)。此外,我将其移至src/main/assets 并再次构建它。到目前为止没有任何变化,Logcat 不包含任何问题特定的警告或调试信息。

EDIT2: 我发现了问题!我将设计用作片段中的布局。因此 Activity 的 onCreate 永远不会被调用。查看此页面了解更多信息:Set custom font for android fragments

【问题讨论】:

Android 可能无法读取此类文件并从中创建字体。见***.com/a/1430320/1207921 将其转换为 truetype 字体 (.ttf) 同意,Android 可能由于某种原因无法读取您的字体。在 LogCat 中查找消息,可能处于调试或警告级别。 【参考方案1】:

请删除 assets 文件夹的文件夹 fonts 子文件夹 并重命名 mavenProLight.otf 而不是 MavenProLight-100.otf。然后试试这个。

        TextView tv = (TextView) findViewById(R.id.profil_fullname);
        Typeface tf = Typeface.createFromAsset(getAssets(), "mavenProLight.otf");
        tv.setTypeface(tf);

可能会得到 100% 的作品。祝你好运!

【讨论】:

所有字体和其他文件都必须在 assets 文件夹中吗?这闻起来像一团糟。【参考方案2】:

问题在于您的路径 /src/main/assets/fonts 。将字体放在 assets/fonts 文件夹中,它会 wrk :)

【讨论】:

src/main/assets/fonts 非常适合 Android Studio 或 Gradle 构建。

以上是关于android:无法设置自定义字体的主要内容,如果未能解决你的问题,请参考以下文章

android将自定义字体设置为油漆

Android开发 如何重写SimpleAdapter,自定义字体的大小?

在 Android 中使用自定义字体

如何在android中为警报对话框设置自定义字体?

Android:想要为整个应用程序而不是运行时设置自定义字体

Xcode 6 大小类中的自定义字体大小无法与自定义字体一起正常工作