2017-01-10 37 views
1

我使用以下代码来改变字体大小,以中等或高或小。 getFontSize()将返回所有这些大小没有这样的方法错误而设置文本外观

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) 
    holder.title.setTextAppearance(new AppController().getFontSize()); 
else 
    holder.title.setTextAppearance(mContext, new AppController().getFontSize()); 

但即时得到以下错误:

java.lang.NoSuchMethodError: No virtual method setTextAppearance(I)V in class Landroid/widget/TextView; or its super classes (declaration of 'android.widget.TextView' appears in /system/framework/framework.jar) 

为什么会出现这样的错误?

+1

看到这里https://code.google.com/p/android/issues/detail?id=183542 – rafsanahmad007

+0

的问题,它看起来像编译器应该失败,但它不会因此在现场崩溃。 根据@ rafsanahmad007链接,我认为它与@弃用的方法有关。 –

+0

你确定'新的AppController()。getFontSize()'返回'@StyleRes int'('int'表示一个样式资源)? –

回答

2

TextView::setTextAppearance要求整数值,在该项目(如@android:style/TextAppearance.Material.Body1)标识样式资源。 如果这是你的意图,那么确保你的getFontSize()方法返回一个有效的ID。

但是,我想,那你实际上是试图设置字体大小,它应该使用的TextView的setTextSize(float size)方法来实现。

相关问题