无法解析方法'getFont(?)'

2022-09-05 00:06:40

文档所述:

Android O 允许您通过将字体文件添加到 res/font/ 文件夹中来捆绑字体作为资源。

因此:

可以使用 getFont(int) 方法检索字体,在该方法中,您需要传递要检索的字体的资源标识符。此方法返回一个字体对象。这将对字体的第一个粗细或样式变体(如果它是字体系列)进行编码。然后,可以使用 Typeface.create(字样、样式)方法来检索特定样式。

注意:文本视图已经为您执行此操作。

Typeface typeface = getResources().getFont(R.font.myfont);textView.setTypeface(typeface);

不幸的是,当我使用上面的代码时,我得到以下错误:

cannot resolve method 'getFont(?)'

以前,我曾经做过以下事情:

Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/myfont.ttf");

但是现在,当我尝试在assets文件夹中创建fonts文件夹时,它会自动跳转到res文件夹中。

我使用的是安卓工作室2.3。提前感谢您的任何帮助。


答案 1

从支持库 26 使用此方法。

ResourcesCompat.getFont(context, R.font.your_font);

资料来源:https://developer.android.com/reference/android/support/v4/content/res/ResourcesCompat.html


答案 2

我知道这可能很晚了,但以下是使用26(兼容模式)之前的API版本的下载字体的文档

基本上,您必须定义字体描述,如下所示(使用两个属性 - app和android),然后使用该类以编程方式访问您的字体:ResourceCompat

Typeface typeface = ResourcesCompat.getFont(context, R.font.myfont);

<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
        <font android:fontStyle="normal" android:fontWeight="400" 
            android:font="@font/myfont-Regular"
            app:fontStyle="normal" app:fontWeight="400"
            app:font="@font/myfont-Regular"/>
        <font android:fontStyle="italic" android:fontWeight="400"
            android:font="@font/myfont-Italic"
            app:fontStyle="italic" app:fontWeight="400"
            app:font="@font/myfont-Italic" />
</font-family>

干杯!


推荐