내 onCreateOptionsMenu()에는 기본적으로 다음과 같은 것들이 있습니다.Android : 옵션 메뉴 항목의 드로어 블 상태 변경시 부작용이있는 것 같습니다.
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() 같은 것을 처리하지 않아야합니까?
스크린 샷을 포함 시켰습니다.
+1 - 좋은 설명! –
예 Emile, 알아요. 하지만 코드에서 드로어 블을 사용하고 mutate()를 수행해야합니다. 이 경우에는 코드에서 건드리지 않고 mutate() 부분을 수행하는 시스템을 계산합니다 (setEnabled() 호출에서). 내가 뭔가를 이해하지 못한다면. – pjv
이 기사에서는 왜 시스템이 mutate를 수행하지 않는지 설명합니다. 나는. 효율성을 위해. 이것은 내가 생각하기에, 당신의 경험이 예상되는 행동이며 Arhimed가 제안한대로 자산을 복제하거나 자신의 아이콘을 변형시키는 코드를 추가해야한다는 것을 의미합니다. "... mutate() 부분을 수행하는 시스템에서의 계산"이라는 안드로이드는 단순히 그렇게하지 않을 것입니다. – Emile