【问题标题】:Failed to convert @drawable/ into a drawable无法将 @drawable/ 转换为可绘制对象
【发布时间】:2013-09-23 01:23:13
【问题描述】:

我已在我的 Android 项目中添加了一张图片,我想在 UI 中使用它。我已将文件 my-image.png 添加到 drawable 目录(添加到使用项目创建的所有 4 个可绘制目录),并将 ImageView 添加到布局中:

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/imageView"
    android:layout_alignParentBottom="true"
    android:layout_alignLeft="@+id/textView"
    android:layout_marginBottom="63dp"
    android:src="@drawable/my-image" />

问题是我收到以下错误:

渲染问题

无法将@drawable/my-image 转换为可绘制对象

这是捕获:

另外,如果我尝试编译项目,我会收到以下错误:

Gradle:任务 ':MyProject:processDebugResources' 执行失败。

为什么会出现这些错误,我该如何解决?我错过了什么吗?我刚刚开始 Android 开发。

【问题讨论】:

    标签: android android-layout android-studio


    【解决方案1】:

    尝试在文件名中使用下划线和小字符,例如

    my_image.png

    【讨论】:

      【解决方案2】:
      Gradle: Execution failed for task ':MyProject:processDebugResources'.
      

      因为你在资源中有命名约定错误

      file name: must contain only [a-z0-9_.]
      

      将文件名重命名为my_image

      【讨论】:

        【解决方案3】:
        Rename this drawable @drawable/my-image to @drawable/my_image 
        

        【讨论】:

          【解决方案4】:

          尝试只使用 abc...xyz 和 0123...9,不要使用 -,而是使用 _(下划线)。

          my_name代替my-name,因为Hyphens(-)在编码中有特殊的含义,所以不能直接和字符串一起使用。

          【讨论】:

          • 有什么理由避免字符串中的连字符?
          • 远离数字也是如此,资源不能以数字开头
          【解决方案5】:

          如果命名约定是正确的尝试:

          打开资源对话框并查看是否显示图像 png 预览。

          在设计视图中选择图像>转到属性>单击省略号按钮>可绘制>搜索您的png图像并单击它。

          如果没有显示预览,请取消资源,然后尝试以 png 格式重新保存图像。

          此示例使用 Photoshop CS2。在 Photoshop 中打开图像并选择文件 > 保存为 Web > 单击保存。 (不要使用文件 > 另存为)

          【讨论】:

            【解决方案6】:

            它对我有用,你不应该只包含特殊字符,只包含字母

            【讨论】: