在使用Android O的"android:fontFamily"时,出现了"文件名必须以.xml结尾"的错误?

20
Android O推出了一个新功能,即XML字体,它允许您将字体用作资源。我正在创建font文件夹在资源文件中,就像Android开发者所提供的一样,但是问题是当使用Android O版本中提供的font文件夹时,我遇到了文件名必须以.xml结尾的错误。
请查看下面的布局。
 <TextView
   android:id="@+id/txtMsgCount"
   android:layout_width="wrap_content"
   android:layout_height="16dp"
   android:background="@drawable/msg_count"
   android:gravity="center"
   android:text="123"
   android:fontFamily="@font/Montserrat_Regular" ////IT IS MY FONT STYLE
   android:textColor="@android:color/white"
   android:textSize="10sp" />

请检查我在res中创建的font文件夹,其中包含Montserrat_Regular.otf文件。

My font folder with font style

在使用以上内容时,我遇到了以下错误:

Error getting

我已经搜索过了,但没有得到预期的结果,请检查:

1. 第一个链接
2. 第二个链接
3. 第三个链接
4. 第四个链接

字体资源文件没有像我点击 右键单击字体文件夹,然后转到新建 > 字体资源文件 时创建。但是没有得到 字体资源文件 的选项,请查看下面:

enter image description here


1
你正在使用哪个版本的Android Studio? - CommonsWare
是的,我已经了解了。它不允许我在字体文件夹中创建字体系列。 - Ravindra Kushwaha
@AkhileshPatil 它没有为我提供在字体文件夹中创建字体系列的选项。 - Ravindra Kushwaha
1
是的,你说你正在使用Android Studio 2.3.3版本。你需要至少2.4版本。 - Mike M.
https://developer.android.com/studio/archive.html,https://developer.android.com/studio/preview/ - Mike M.
显示剩余17条评论
7个回答

10

Android Studio 2.3.3构建链不完全支持字体资源。完全支持需要使用Android Studio 3.0+及其相关的Gradle版本的Android插件。在那时,您将能够创建一个与layout/menu/等并列的font/资源目录。

也就是说,在您准备升级到Android Studio 3.0之前,请暂停此操作。


显然,“canary”已被更名为“preview”,而Android Studio构建已被重新标记为“beta”:http://tools.android.com/download/studio/canary/latest - M66B
在2.3.3版本上没有其他办法了。我还在使用kotlin,版本是3.0 Beta。我觉得它应该可以运行。但是我的问题还没有解决,因为我需要在Andorid上工作。谢谢你的建议。:) - Ravindra Kushwaha
@M66B:我睡觉的时候他们一定已经把Android Studio 3.0升级到Beta 1了。 我上次知道的是,他们还在使用大约第9版金丝雀版。 - CommonsWare
@RavindraKushwaha:“意味着在2.3.3上没有其他方法” - 您可以尝试使用AS 2.3.3的3.0 beta版本插件,但我强烈怀疑它不会起作用。 - CommonsWare
@CommonsWare看起来更具有结构性,因为“金丝雀”页面现在指的是“预览”页面。这是在昨天(CET)或之前更改的。不过,另一方面,这个页面表明情况并非如此:https://developer.android.com/studio/archive.html - M66B
1
@CommonsWare 刚刚检查了一下,使用 Gradle 插件的 3.0.0-beta1 版本与 AS 2.3.3 不兼容。Gradle 同步失败并显示“错误:此 Gradle 插件需要至少 Studio 3.0”。 - SpaceBison

4

我在这个错误上浪费了一个小时,使用的是 AS 3.0 beta2、Gradle 4.x 和正确的 build-tools。

事实证明,我的字体副本存放在一个名为“fonts”的文件夹中。这个文件夹在 Android 项目视图中不会显示出来。而且由于我没有注意到“s”,所以无法读取错误信息。这只是一个小小的提醒,希望对读者有所帮助!


1
嗨,我们社区中的许多人有时会说,每当他们看到关于软件工程师的性别假设时,他们会担心人们会感到被排除在外。我想知道,您能否尝试避免在您的帖子中添加男性导向的问候语和代词,以营造更受欢迎的环境?谢谢。 - halfer
确实,这也是我的情况。我不知道为什么会出现重复。 - arslancharyev31
在我的情况下,是一个错误命名的值目录。因此,只需扫描您的结构以查找错误的名称即可。 - VipulKumar

3

我刚遇到了同样的问题,在寻找答案时,我来到了这个帖子。

我从deverloper.android.com上找到了解决方案。

  1. 在Android Studio中右键单击“res”文件夹。

  2. 选择“新建”>“Android资源目录”。

  3. 将其命名为“font”。

  4. 在此处,您应该放置仅包含a-z 0-9和_字符的字体文件(.ttf)。

  5. 按照以下方式设置您的字体(我的字体叫做“alegreyaregular.ttf”)

Typeface typeface = ResourcesCompat.getFont(this, R.font.alegreyaregular);
TextView textView.setTypeface(typeface);

2
嘿!看那个。我已经在做所有其他答案建议的事情,但它仍然不起作用。这是唯一有效的方法。 - uesports135

2

我曾经遇到过同样的问题!只需更新您的build.gradle文件即可解决上述问题。

classpath 'com.android.tools.build:gradle:3.0.1'

compileSdkVersion 26

buildToolsVersion '26.0.3'

将您的AndroidStudio更新到最新版本。

祝您愉快。


2

我曾经遇到过同样的错误文件名必须以.xml结尾,但是当我使用以下设置时,问题神奇地解决了。

在项目级别的Gradle中使用以下设置:

compileSdkVersion 26
buildToolsVersion "26.0.2"
defaultConfig {
    applicationId "com.company.app"
    minSdkVersion 21
    targetSdkVersion 26
...
}

在应用程序级别的Gradle中使用以下设置:

classpath 'com.android.tools.build:gradle:3.0.1'

Android Stidio :

Android studio version 3.0.1.

Cheers!


1
Android Studio 2.4 包含支持所有新的开发者功能,适用于 Android O,您需要更新 Studio。
并创建 XML 文件。
1)右键单击字体文件夹,然后转到“新建”>“字体资源文件”。出现“新建资源文件”窗口。
2)输入文件名,然后单击“确定”。新的字体资源 XML 将在编辑器中打开。
<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:android="http://schemas.android.com/apk/res/android">
    <font
    android:fontStyle="normal"
    android:fontWeight="400"
    android:font="@font/Montserrat_Regular.otf" />

</font-family>

我无法在我的“字体”文件夹中创建“创建字体系列”。它没有提供选项。我知道这种方法。但是当我在“字体”上右键单击时,它不会提供“字体资源文件”。 - Ravindra Kushwaha
我刚刚检查了更新,它不允许我将我的Android Studio从2.3.3升级到2.4。它说你已经有更新版本了。 - Ravindra Kushwaha
感谢您的输入..问题尚未解决 :( ..对您的努力加一分 - Ravindra Kushwaha

0

这是一种普遍问题,我遇到了这个带有错误信息的问题

main\res\lib\poi-3.12-android-a.jar:错误:文件名必须以.xml结尾

我将这个jar文件放在资源文件夹(res)中,我删除了这个jar文件和文件夹,问题得到解决。避免在res目录中放置任何不必要的文件/文件夹。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接