当前,我正在将项目从 targetSdkVersion 25迁移到26 这是我的app.gradle:
android {
compileSdkVersion 26
buildToolsVersion "27.0.2"
defaultConfig {
minSdkVersion 17
targetSdkVersion 26
multiDexEnabled true
versionCode versionMajor * 100000 + versionMinor * 1000 + versionPatch * 10 + versionHotfix
versionName "${versionMajor}.${versionMinor}.${versionPatch}"
}
}
但是在升级时,我反复遇到此错误:
String types not allowed (at 'font' with value 'Knockout-31').
Message{kind=ERROR, text=String types not allowed (at 'font' with value 'Knockout-31')., sources=[D:\Qdoba-Android\qdoba-android-app\app\build\intermediates\res\merged\internal\debug\values\values.xml:2466:21-32], original message=, tool name=Optional.of(AAPT)}
这是 fonts文件夹的一个片段:
请帮助。
答案 0 :(得分:0)
根据Android文档link
Android 8.0(API级别26)引入了一项新功能,即XML字体, 它使您可以将字体用作资源。您可以在以下位置添加字体文件 res / font /文件夹将字体捆绑为资源。这些字体是 已在您的R文件中编译并在Android中自动可用 工作室。您可以在新的帮助下访问字体资源。 资源类型,字体。例如,要访问字体资源,请使用 @ font / myfont或R.font.myfont。
因此,您必须将所有字体移到res内的font文件夹中。 如果找不到字体目录,请在res目录中创建一个新的“ font”目录。
在视图中使用字体,如下所示,
android:fontFamily="@font/Knockout-31"
不使用属性android:fontFamily =“ ...”即可使用自定义字体系列的另一种方法
用于文本视图
public class customFont extends android.support.v7.widget.AppCompatTextView{
public customFont(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
public customFont(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public customFont(Context context) {
super(context);
init();
}
public void init() {
Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "Knockout-31.otf");
setTypeface(tf ,1);
}
}
您的带有自定义字体的文本视图
<example.com.example.customFont
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text View" />
谢谢
答案 1 :(得分:0)
解决方案:将gradle插件更新到3.0以上