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

时间:2017-03-31 13:42:16

标签: java android

正如documentation所述:

  

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

结果:

  

您可以使用 getFont(int) 方法检索字体   需要传递您想要的字体的资源标识符   检索。此方法返回Typeface对象。这编码了   字体的第一个重量或样式变体,如果是字体   家庭。然后,您可以使用Typeface.create(字体,样式)方法   检索特定样式。

     

注意:TextView已经为您完成了这项工作。

     

字体字体= getResources()。getFont(R.font.myfont);   的 textView.setTypeface(字体);

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

cannot resolve method 'getFont(?)'

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

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

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

我正在使用 android studio 2.3 。提前感谢您的帮助。

8 个答案:

答案 0 :(得分:17)

使用支持库26中的此方法。

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

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

答案 1 :(得分:2)

尝试这样的事情

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

答案 2 :(得分:1)

我还没有使用它,但据我所知,只有将Android Studio更新为2.4才能定位Android O设备。您还需要将SDK更新到最新版本。因为doc说getFont()在Android O中可用。

答案 3 :(得分:1)

由于它是在O中发布的新方法,因此您必须将开发人员预览作为构建目标来使用它。有关详细信息,请查看此link

答案 4 :(得分:0)

我这样做是这样的:

private TextView textView;


@Override
protected void onCreate(Bundle savedInstanceState) {
.
.
.
.

textView = (TextView) findViewById(R.id.textView);
Typeface mTextView = Typeface.createFromAsset(getAssets(),"fonts/your_font_style.ttf");
textView.setTypeface(mTextView);

希望这会对你有所帮助。

答案 5 :(得分:0)

fonts文件夹应位于assets文件夹下,因此请尝试在那里创建文件夹。

答案 6 :(得分:0)

由于我无法直接从Android Studio创建字体文件夹,因此我使用 Windows资源管理器打开了项目文件夹并创建了字体app\src\main\assets\文件夹中,并在那里粘贴我的字体文件。

正如许多其他人在答案中建议我必须使用Android Studio 2.4 Canary才能使用Android O新功能。 documentation州:

  

只有Android Studio 2.4支持所有新开发者   Android O提供的功能。所以你需要获得金丝雀   Android Studio 2.4版本开始使用Android O SDK。但   您仍然可以安装稳定版本的Android Studio。

答案 7 :(得分:0)

我知道这可能会迟到但是documentation用于在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>

干杯!