在我的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()这样的东西吗?
我附上了截图:
答案 0 :(得分:3)
http://www.curious-creature.org/2009/05/02/drawable-mutations/
Romain Guy的上述文章解释了这种情况并提供了解决方法。
答案 1 :(得分:1)
是的,这看起来很奇怪。我无法解释为什么会这样,但是我可以提出一个解决方法 - 而不是使用内部可绘制的资源,你可以将相同的图像放在你的app drawable resourse目录中,你可以复制add
图像,所以您有2张图片 - add_for_menu_item_1.png
和add_for_menu_item_2.png
的名称不同,但具有相同的视觉效果。我相信这会成功。
答案 2 :(得分:0)
这两个菜单项是否共享同一个alphaChar导致第二个menuItem被禁用?