【问题标题】:color value drawable resource issue颜色值可绘制资源问题
【发布时间】:2013-12-15 20:15:22
【问题描述】:

我在一个名为 drawable-sw600dp 的文件夹中有一个 1900*1200 的图像,该图像 id 喜欢在 nexus 7 上使用。当我尝试运行应用程序时,主活动屏幕是白色的,我收到以下错误:

java.lang.NumberFormatException: Color value '@drawable-sw600dp/background5' must start with #
at com.android.layoutlib.bridge.impl.ResourceHelper.getColor(ResourceHelper.java:71)
at com.android.layoutlib.bridge.impl.ResourceHelper.getDrawable(ResourceHelper.java:248)
at android.content.res.BridgeTypedArray.getDrawable(BridgeTypedArray.java:782)

会不会是图片太大而无法使用?或者什么可能导致此错误发生?

这是在我的 activity_main.xml 中设置背景的地方:

xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background5"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:id="@+id/MainLayout"
tools:context=".MainActivity">

在我的其他文件夹中drawable-hdpi,-mdpi没有问题。但是,我将 .jpg 图像设置为更高的分辨率,现在它会产生此错误,这就是为什么我怀疑是高分辨率导致了问题。

【问题讨论】:

  • android 抱怨你的颜色不是以 # 开头的。发布 background5.xml
  • background5 是 .jpg 图片
  • 向我们展示您在代码中调用 background5 的位置
  • 我的回复已更新。不支持 jpg。
  • @ez4nick,试着清理你的项目?出于某种原因,它认为您指的是颜色值。您是否可能对 XML 可绘制对象使用相同的文件名?

标签: java android resources drawable


【解决方案1】:

删除文件名中的“-”。

注意:“-”不是有效的基于文件的资源名称字符:基于文件的资源名称只能包含小写 a-z、0-9 或下划线

【讨论】:

  • 是否有一些文件可以支持这种疯狂?在偶然发现这个答案之前,我刚刚拔掉了我所有的头发。谢谢。
  • 我遇到了同样的问题,但在我的情况下,文件名以数字开头。我将文件名更改为以字母开头,并且可以正常工作。
【解决方案2】:

正如android doc 所说,不支持jpg。改用 png:

用作背景的可绘制对象。这可以是对完整可绘制资源的引用(例如 PNG 图像、9-patch、XML 状态列表描述等),也可以是纯色,例如“#ff000000”(黑色)。

【讨论】:

  • 我知道文档说不支持 jpg,但是我有其他布局使用 .jpg 图像作为背景非常好,而且当我使用较低分辨率的 .jpg 图像 1280*720 时它也可以工作美好的。分辨率是否可能导致错误?
  • 也许,当您使用未描述为文档的东西时,它有时会起作用,有时会不起作用,但不知道为什么。只需遵循指南即可。
  • 它确实是图像的分辨率,我尝试了稍低的分辨率并且效果很好。
  • 错了!我只是将我的一张 png 图像更改为 jpg,然后毫无问题地运行我的应用程序。在此页面上,它显示“位图图形文件(.png、.jpg 或 .gif)”。 developer.android.com/guide/topics/resources/…
【解决方案3】:

有些人提到重启 Eclipse 有效,但这对我不起作用。

相反,我发现我必须简单地重命名图像文件,使其不以数字开头。 Android 开发者图标包中的所有图标都以数字开头,而我刚刚复制了一个。看起来如果文件以数字开头,则假定它是十六进制颜色值的开头,因此会查找 # 符号。

使用:Eclipse Juno 3.7.2、Android SDK 21.1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    • 1970-01-01
    相关资源
    最近更新 更多