2010-04-14 133 views
2

我正在制作一个应用程序的菜单,并指向this useful resource,其中列出了属于android 2.0 jar的所有可绘制对象。给出的用法示例是关于android.R.draw中的'private'drawable的说明

myMenuItem.setIcon(android.R.drawable.ic_menu_save); 

不幸的是,我想要的(以及大多数列表)默认情况下不可用。我得到

android.R.drawable.ic_menu_login cannot be resolved 

当我尝试设置的菜单项图像:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Add two example menu buttons 
    int groupId = 0; 
    int menuItemOrder = Menu.NONE; 

    int menuItemId = 1; 
    String menuItemText = "Add Login Details"; 
    MenuItem menuItem = menu.add(groupId, menuItemId, menuItemOrder, menuItemText); 
    menuItem.setIcon(android.R.drawable.ic_menu_login) 

难道在最近的Android版本什么变化?看来,其中大部分是现在“私人资源” ......找不到上这么多的信息,但我发现了一些建议:

它被用来访问私有 资源。不要使用它,因为这些私人资源通常是 删除/重命名/等。如果使用它, 很可能会在将来的 中破坏您的应用。

为什么他们会改变资源名称?(它们背后的图像是否可以确定,但是名称?)然后,如何访问ic_menu_login?有没有比上述更好的理由?

回答

12

然后如何访问ic_menu_login?

将其复制到您的应用程序中。您可以在SDK安装中找到所有这些文件,特别是$ANDROID_HOME/platforms/$API/data/res/,其中$ANDROID_HOME是您安装SDK的位置,$API是某些Android级别(例如android-2.1)。

+0

谢谢这工作的一种享受。 – edzillion 2010-04-15 16:24:29

+0

感谢CommonsWare你摇滚人我想见你! – 2011-11-10 10:47:02