Android:无法将@ drawable / picture转换为drawable


112

在我的drawable文件夹中,我有一些图像,它们都引用完美,但是当我尝试在同一文件夹中添加大小完全相同的其他图像,并尝试引用它时,会出现错误“无法转换@可绘制图片/图片绘制成可绘制图片”。我尝试过使用不同名称的同一张图片,但它一直在给我该错误。我也在不同的XML布局和相同的东西中尝试过。您还可以看到图片的名称分别是“ jack”,“ abc”,“ question_mark”,严格来说,可以使用哪些字符的规则仍然存在,但错误消息不断出现。谢谢任何关于如何解决问题的建议。

无法将@ drawable / picture转换为drawable


2
出于某种奇怪的原因,所有排序都经过几次点击后突然生效了!如果您遇到此问题,我的建议是仅重新启动Eclipse,并确保所有内容均已正确引用和命名。
杰克·特罗布里奇

2
有时,只是从头开始重建项目就可以摆脱这些Android SDK问题。我见过奇怪的情况,它对我的​​所有可绘制对象使用了错误的图像(没有错误,但对每个可绘制对象使用了正确的图像旁边的图像)可能是参考ID问题。
纪尧姆

-1 Android,+ 1 Windows
mihai71

4
对我来说,它是文件名中间的字符“-”。重命名后,Android Studio一切正常。
martin.p,2015年

Answers:


200

重新启动Eclipse(不幸的是),问题将消失。


在Eclipse中关闭并重新打开该项目对我有用。谢谢Aliyah!
stephen.hanson 2012年

Ia在drawable-normal-hdpi上遇到了这个问题,但是当我的图像在drawable-hdpi下时-一切正常。
2013年

@DoctororDrive-也许您的问题略有不同。你还有错误吗?
Androliyah 2013年

4
非常有趣的是,Eclipse和Android Studio中都存在此问题
Mohammad AbuShady 2014年

3
关闭/重新打开项目对我不起作用,但是退出/重新启动android studio却可以。谢谢Aliyah。
tmr

143

还要检查资源名称是否包含任何非法字符(对我来说,它是我的图像中的“-”)


Android自己的图标包包含类似Eclipse的文件名,例如10-device-access-alarms.png。谢谢。
本体

12
Android Studio还会使这些文件名阻塞。重命名为下划线已为我修复。
赛普拉斯弗兰肯费尔德

对我来说,它是空格字符“”!
Efreeto

在我看来,空间是罪魁祸首
Saju,2016年

对我来说,它也是“-”,奇怪的是,android studio并没有将这个东西标记为红色……
Haseeb Zulfiqar

55

如果重新启动Eclipse无法解决问题,请确保映像名称以字母字符(非数字)开头。


4
谢谢。Android使用可绘制名称在R文件中创建可绘制id变量。例如,如果文件以数字开头,则变量将以数字开头,这在Java语言中是不允许的。
momo 2013年

9
还要确保它不包含破折号(-);例如'mic-back'无效,'mic_back'没问题
Markus

这是我的问题。Android网站上的包装所有图标都有前导数字。
theblang

一定是png吗?我正在尝试使用jpg的。
IgorGanapolsky

28

file name必须仅包含abc...xyz 012...789 _ . 在Resources文件夹中。

例如:

my-image.pngFalse
MyImage.pngFalse
我的image.pngFalse
...
...

my-xml.xmlFalse
MyXml.xmlFalse
我的xml.xmlFalse
...
...


25

这是因为您的图像名称包含“-”符号。唯一允许的字符是[a-zA-Z0-9_。]。

谢谢


1
大写字母无效。如果您使用它们,Android Studio将给出以下错误:错误:任务':app:mergeDebugResources'的执行失败。>错误:无效的文件名:必须仅包含小写字母和数字([a-z0-9
LightMan

5

我在Android Studio上遇到相同的问题。无需重新启动IDE,只需关闭并重新打开项目即可解决问题。(确保src正确输入)。


重建项目也可以做到。
2014年

我做了File-> Invalidate Caches / Restart ...,它工作得很好(并且可能过大了)。
SMBiggs 2015年

3

在Android Studio中,您的资源(图像)文件名不能以开头,NUMERIC并且不能包含任何BIG字符。要解决您的问题,请按照Aliyah所说的做。只需重新启动您的IDE。这也解决了我的问题。


2

简化文件名,似乎是文件名中的任何特殊字符都会使其打it。例如将chaange“ my-main-header.png”更改为“ header1.png”不能确定原因,但是可以


2
这是因为资源文件名在中转换为资源标识符,R.java并且-不是标识符的有效字符。
laalto

2

对于Android Studio,我也有同样的问题。这是由于从Linux运行引起的,这意味着文件没有自动获得扩展名。通过在文件名的末尾手动添加.png,它可以识别文件类型并相应地加载。

如果您尝试在项目内部重构重命名,则Android studio可能会显得有些杂乱无章,因为android会立即尝试重新生成R。我不知道是什么原因导致错误,因为它指向一些看似随机的代码行,在我的情况下是注释。

解决方案:从可绘制对象中删除,在项目外部重命名,然后再次放入。


1

它可能比其他发布者建议的要简单得多:如果您有多个项目,请确保未在错误的项目中创建xml布局文件。

创建后,该文件将自动打开,因此可能不会被注意到,并且您认为它在正确的项目中。显然,对可绘制对象或其他资源的任何引用都是无效的。

是的,我就是那个愚蠢的人。从现在开始,我将关闭所有未使用的项目:)


1

我想我找到了一种无需重新启动Eclipse或不关闭项目(对我有用)的方法:

  • 在Eclipse中的res /下重命名图像文件名->选择文件,然后按F2(对我来说,它是res / drawable-mdpi / bush-landscape.jpg->更改为bush.jpg)

  • 生成项目(它仍然会显示错误)

  • 更改使用图像的位置(我在“图形布局”中进行了更改。对我来说,该位置是LinearLayout / Background / bush-landscape->将“ bush-landscape”更改为“ bush”)

  • 建立项目




0

就我而言,我在不同的文件夹(具有相同的名称)中有一张图像,用于支持不同的dpi和设备尺寸。除了其中一个图像外,所有图像都具有相同的名称。输入错误,并且像其他名称一样将其重命名后,它解决了我的问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.