1

在我的 onCreateOptionsMenu() 中,我基本上有以下内容:

public boolean onCreateOptionsMenu(Menu menu) {

        menu.add(Menu.NONE, MENU_ITEM_INSERT, Menu.NONE, R.string.item_menu_insert).setShortcut('3',
                'a').setIcon(android.R.drawable.ic_menu_add);

        PackageManager pm = getPackageManager();
        if(pm.hasSystemFeature(PackageManager.FEATURE_CAMERA) && pm.hasSystemFeature(PackageManager.FEATURE_CAMERA_AUTOFOCUS)){
            menu.add(Menu.NONE, MENU_ITEM_SCAN_ADD, Menu.NONE, ((Collectionista.DEBUG)?"DEBUG Scan and add item":getString(R.string.item_menu_scan_add))).setShortcut('4',
                    'a').setIcon(android.R.drawable.ic_menu_add);
        }
        ...
}

在 onPrepareOptionsMenu 中还有以下内容:

final boolean scanAvailable = ScanIntent.isInstalled(this);
final MusicCDItemScanAddTask task = new MusicCDItemScanAddTask(this);          
menu.findItem(MENU_ITEM_SCAN_ADD).setEnabled(scanAvailable && (tasks == null || !existsTask(task)));

如您所见,两个选项项具有相同的可绘制集(android.R.drawable.ic_menu_add)。现在,如果在 onPrepareOptionsMenu 中第二个菜单项被禁用,它的标签和图标变为灰色,但第一个菜单项的图标也变为灰色,而第一个菜单项的标签保持黑色并且仍然可以点击。是什么导致了两个图标/可绘制对象之间的这种串扰?在这种情况下,系统不应该处理像 mutate() 这样的事情吗?

我已经包括了一个截图:

顶部菜单项图标不应为灰色

4

3 回答 3

3

http://www.curious-creature.org/2009/05/02/drawable-mutations/

Romain Guy 的上述文章解释了这种情况并提供了解决方法。

于 2011-01-02T14:32:41.913 回答
1

是的,这看起来很奇怪。我无法解释为什么会这样,但是我可以提出一个解决方法-您可以将相同的图像放在应用程序可绘制资源目录中,而不是使用内部可绘制资源,并且可以复制add图像,因此您有 2 张图像-add_for_menu_item_1.pngadd_for_menu_item_2.png以不同的方式命名,但具有相同的视觉表示。我相信这会奏效。

于 2011-01-02T14:02:33.000 回答
0

会不会是两个菜单项共享相同的 alphaChar 导致第二个 menuItem 被禁用?

于 2011-01-02T14:43:29.413 回答