背景:我正在使用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告诉我我的问题已经被问及并回答了,但它没有!
任何想法?
答案 0 :(得分:5)
注意:我的程序或任何项目文件中没有引用后两个android:icon声明
它们在您的菜单中。否则,android:icon
属性将不存在。因此,图标由菜单本身引用。
例如我无法更改以下android:icon声明
那是因为there is no icon in the OS with that name。
此外,除非您在菜单中使用的每个图标都来自操作系统,否则最好将它们从SDK复制到项目中。一些OEM用自己的版本替换标准图标。如果您将OS图标与自己的图标混合,即使您将图标设计为与模拟器上的图标相匹配,它们也不会与其他设备匹配。通过将SDK中的图标复制到项目中,可以确保菜单中的一致性 - 如果图标在模拟器上看起来正确,则在其他设备上看起来相同。
我发现这非常令人困惑,因为android:icon已声明但未在我的程序或任何项目文件中的任何位置引用。
图标是菜单的一部分。否则,android:icon
属性将不存在。因此,菜单本身会引用不存在的图标。
答案 1 :(得分:2)
行@android:drawable/ic_menu_preferences
实际上是一个引用本身。它引用了菜单项上显示的标准Android图像。这里有some documentation来帮助您绘制标题。
答案 2 :(得分:1)
我认为,您添加了一个已损坏的png文件
关注此link,可能会对您有所帮助