【问题标题】:Bad XML block, Error: No resource found that matches the given name (at 'icon' with value '@android:drawable错误的 XML 块,错误:找不到与给定名称匹配的资源(在 'icon' 处,值为 '@android:drawable
【发布时间】:2011-05-21 21:49:24
【问题描述】:

背景:我正在使用 Eclipse 开发一个 Android 应用程序。我有一个 xml 文件,其中包含一个包含三个项目的菜单。每个项目都包含一个 android:icon 声明。我的程序中只引用了第一个 android:icon 声明。注意:后两个 android:icon 声明在我的程序或任何项目文件中都没有被引用。

问题:我徒劳地尝试添加第四个菜单项,但发现了一些令我非常困惑的东西。我不仅不能在我的菜单中添加一个项目,我也不能改变现有的最后两个 android:icon 声明,或者我得到标题中描述的错误。例如,我无法更改以下 android:icon 声明:

android:icon="@android:drawable/ic_menu_preferences"

收件人:

android:icon="@android:drawable/ic_menu_preference"

我觉得这很令人费解,因为 android:icon 已声明,但在我的程序或任何项目文件中的任何地方都没有被引用。而且我在互联网上找到的“解决方案”都没有解决我的问题。在我写这篇文章时,Stackoverflow 告诉我我的问题已经被提出并得到了回答,但还没有!

有什么想法吗?

【问题讨论】:

    标签: android menu icons drawable


    【解决方案1】:

    注意:后两个 android:icon 声明在我的程序或任何项目文件中均未引用

    它们在您的菜单中。否则,android:icon 属性将不存在。因此,图标由菜单本身引用。

    例如,我无法更改以下 android:icon 声明

    那是因为there is no icon in the OS with that name

    此外,除非您在菜单中使用的每个图标都来自操作系统,否则最好将它们从您的 SDK 复制到您的项目中。一些 OEM 用他们自己的版本替换标准图标。如果您将操作系统图标与您自己的图标混合在一起,即使您设计的图标与模拟器上的图标相匹配,它们也不会在其他设备上匹配。通过将 SDK 中的图标复制到您的项目中,您可以确保菜单内的一致性——如果图标在模拟器上看起来正确,它们在其他设备上看起来也一样。

    我觉得这很令人费解,因为 android:icon 已声明,但在我的程序或任何项目文件中的任何地方都没有引用。

    图标是菜单的一部分。否则,android:icon 属性将不存在。因此,菜单本身引用了不存在的图标。

    【讨论】:

    • 感谢@CommonsWare。我现在明白了。
    • 感谢@CommonsWare。我越读你的答案就越能摆脱它。谢谢!我也试图“投票”你的答案,但它不会让我。
    • 这是一个很好的答案。我很高兴它仍然在这里进行审查。我也认为它会帮助其他人。
    • 感谢您的回答。这真的很有帮助。
    【解决方案2】:

    @android:drawable/ic_menu_preferences 行实际上是一个引用本身。它引用了显示在您的菜单项上的标准 Android 图像。这里是 some documentation 来帮助你绘制绘图。

    【讨论】:

    • 谢谢@Gary。我也看到了这个,这很有帮助link
    【解决方案3】:

    我想,你添加了一个损坏的 png 文件

    关注这个link,或许对你有帮助

    【讨论】:

    • No @Houcine 我没有添加任何 png 文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多