我在使用新字体功能以编程方式在TextView上设置字体时收到NoSuchMethodError

时间:2017-08-02 11:23:30

标签: android

从这个官方示例中https://developer.android.com/preview/features/working-with-fonts.html我尝试为TextView设置自定义字体,该字体在XML /布局中设置时有效,但在以编程方式设置时无效我收到以下错误:

  

java.lang.NoSuchMethodError:没有虚方法   的getFont(I)Landroid /图形/字体或符号;在班上   Landroid /内容/ RES /资源;或其超级类(声明   ' android.content.res.Resources'出现在   /system/framework/framework.jar)

这是我通过代码执行此操作的方式:

    Typeface typeface = getResources().getFont(R.font.morganbold);
    providerTxv.setTypeface(typeface);

这是一个错误还是我做错了什么?

我将Android Studio Canary 9与Gradle版本一起使用:gradle:3.0.0-alpha9 有这些支持依赖:

'com.android.support:design:26.0.0'
'com.android.support:appcompat-v7:26.0.0'

2 个答案:

答案 0 :(得分:5)

您必须使用

tokenizedString = strtok(string, "\n");
tokenizedString = strtok(tokenizedString, delimit);

See docs

答案 1 :(得分:0)

找到解决方案( getFont()将在 Android'O'(26.0.0-beta1)版本中运行。所以我们必须移动以下解决方案):

  1. 将font.ttf / otf放入资源文件夹

    Typeface light = Typeface.createFromAsset(getAssets(), "font.ttf");
    
  2. 在视图中设置TypeFace

     YourView.setTypeFace(light);
    
  3. 请参阅链接 https://developer.android.com/reference/android/support/v4/content/res/ResourcesCompat.html#getFont(android.content.Context,int)