澄清android.R.drawable中的'private'drawables

edz*_*ion 5 android android-resources android-drawable

我正在为一个应用程序制作一个菜单,并指向这个有用的资源,它列出了作为android 2.0 jar一部分的所有drawable.给出的用法示例是

myMenuItem.setIcon(android.R.drawable.ic_menu_save);
Run Code Online (Sandbox Code Playgroud)

不幸的是,我想要的那个(以及大多数列表)默认不可用.我明白了

android.R.drawable.ic_menu_login cannot be resolved
Run Code Online (Sandbox Code Playgroud)

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

    @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 )
Run Code Online (Sandbox Code Playgroud)

最近的Android版本有什么变化吗?似乎大多数现在都是"私人资源"...找不到这方面的信息,但我发现了一些建议:

它用于访问私有资源.不要使用它,因为这些私有资源经常被删除/重命名/等.使用它很可能会在将来破坏您的应用程序.

为什么他们会改变资源名称?(他们背后的图像肯定,但名称?)我如何访问ic_menu_login呢?有没有比上述更好的理由?

Com*_*are 14

我如何访问ic_menu_login呢?

将其复制到您的应用程序中 你可以找到所有的人都在你的SDK安装,特别是在$ANDROID_HOME/platforms/$API/data/res/,在这里$ANDROID_HOME是无论你安装SDK和$API一些Android的水平(例如,android-2.1).