ho trovato un nuovo modo per risolvere questo problema utilizzando un drawable selettore xml file. Basta creare un selettore con l'icona che si desidera utilizzare nella vostra voce di menu, è possibile cambiare sia la tinta, alfa o entrambe le bitmap:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="true">
<bitmap android:src="@drawable/ic_menu_item"
android:tint="@color/enabled_color"
android:alpha="@integer/enabled_alpha"/>
</item>
<item android:state_enabled="false">
<bitmap android:src="@drawable/ic_menu_item"
android:tint="@color/disabled_color"
android:alpha="@integer/disabled_alpha"/>
</item>
</selector>
Come nota a margine; Mi piace impostare la tinta su "?android:attr/textColorPrimary"
per lo stato abilitato e "?android:attr/textColorHint"
per lo stato disabilitato. In questo modo si regolerà a seconda del tema utilizzato.
Poi si può solo impostare l'icona nel file XML menu per la risorsa di selezione:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/menu_action"
android:orderInCategory="0"
android:title="@string/title_menu_action"
android:icon="@drawable/ic_menu_item_selector"
app:showAsAction="ifRoom"/>
</menu>
Poi quando si chiama item.setEnabled(enabled)
il colore e/o alfa dell'icona cambierà con il stato!
Accettato ed eliminato la mia risposta. –
In realtà questo cambia il colore della voce/del titolo del menu? Cioè, non lo esclude? Da quello che ho capito, ciò influenzerà solo l'icona. Cosa succede se non hai un'icona e hai solo testo? –
La chiamata a item.setEnabled() renderà già il testo ombreggiato. Il problema è che su Action Bars il testo è disattivato, ma l'icona no - questo codice lo mette in evidenza. –