android - 关于 android.R.drawable 中 'private' 可绘制对象的说明

标签 android android-drawable android-resources

我正在为一个应用程序制作菜单并被指向 this useful resource其中列出了属于 android 2.0 jar 的所有可绘制对象。给出的用法示例是

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 版本有什么变化吗?似乎其中大部分现在都是“私有(private)资源”……找不到太多关于此的信息,但我找到了一些建议:

It is used to access private resources. Do not use it because these private resources are often removed/renamed/etc. Using it would most likely break your app in the future.

他们为什么要更改资源名称? (它们背后的图像是肯定的,但名字?)那么我如何访问 ic_menu_login 呢?还有比上述更好的理由吗?

最佳答案

How do I access ic_menu_login then?

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

关于android - 关于 android.R.drawable 中 'private' 可绘制对象的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2636805/

相关文章:

java - android location apis : FusedLocationApi. getLastLocation 给出 null

android - 在 Lollipop 崩溃前使用 android vector Drawables

android - 当在 xml 布局中声明 2 个 ImageView 时,内存中有 2 个可绘制副本?

android - 如何让 Android 翻译 boolean 值?

android - 所有屏幕尺寸的资源文件夹名称

java - 将图像添加到自定义 ArrayList 以实现序列化 Intent

Android 应用程序应在发布 1 个月后过期

Android Gradle 构建变体 - Google 上传无法识别 applicationId

android - Glide 正在加载半张图像

android - 如何在 android XML 中连接多个维度?