Modifier par programmation ActionBar icône
Je reviens à mon activité principale à partir d'un fragment et un peu de logique je dois changer l'apparence d'une icône sur la barre d'action menu.
C'est le menu sur la barre d'action:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="it.gn.sfa.Main">
<item
android:id="@+id/action_search"
android:actionViewClass="android.widget.SearchView"
android:icon="@drawable/ic_action_search"
android:showAsAction="collapseActionView|ifRoom"
android:title="Search" />
<item
android:id="@+id/action_filter"
android:icon="@drawable/ic_action_filter_empty"
android:showAsAction="ifRoom"
android:title="Filter" />
<item
android:id="@+id/action_new"
android:icon="@drawable/ic_action_new"
android:showAsAction="ifRoom"
android:title="New" />
</menu>
J'ai du modifier le sencond élément (l'un avec l'id = action_filter
).
J'ai essayé différentes solutions trouvées sur les différents post. Les plus notés est
mOptionsMenu.getItem(0).setIcon(getResources().getDrawable(R.drawable.ic_action_filter));
mais ne semble pas fonctionner.
De l'autre côté getActionBar().setIcon(getResources().getDrawable(R.drawable.ic_action_filter));
change le logo, et je ne veux pas.
Comment puis-je changer uniquement le deuxième élément de menu?
Vous pouvez poster tout le code lié à la mOptionsMenu? Plus précisément, quand et comment vous êtes l'instanciation de cette mOptionsMenu variable
J'instancie mOptionsMenu dans onCreateOptionsMenu(Menu menu): mOptionsMenu = menu.
Vérifier ma réponse ici: stackoverflow.com/a/28478791/1038702
J'instancie mOptionsMenu dans onCreateOptionsMenu(Menu menu): mOptionsMenu = menu.
Vérifier ma réponse ici: stackoverflow.com/a/28478791/1038702
OriginalL'auteur Luca | 2014-09-02
Vous devez vous connecter pour publier un commentaire.
essayer celui-ci
En supposant que vous avez tout mis en place pour
mOptionsMenu
dansEspère que cela aide 🙂
Juste essayé et mOptionsMenu.findItem(R. id.action_filter).setIcon(R. drawable.ic_action_filter); me donne une nullPointerException.
hmm, postez votre npe ici, parce que ma réponse a fonctionné pour moi, je l'ai testé dans mon cas de test.
J'ai posté tout ici. J'espère que c'est clair.
OriginalL'auteur Spurdow
J'espère qu'il aura de l'aide pour vous
OriginalL'auteur TheLastSummer
Vous devez modifier votre onCreateOptionsMenu(Menu menu)
J'ai changé la couleur de ma barre de recherche par programme. Je vous poste le code ici. Espérons que cela aide.
Où getTintedDrawable() est une fonction que j'ai créé qui retourne un drawable. Donc tout ce que vous devez faire est de remplacer
getTintedDrawable(R.drawable.search, R.color.blue)
par votre drawable.REMARQUE: j'ai utilisé
menu.getItem(0)
mon code car j'ai eu 1 seul article défini dans menu/items.xml. Si vous avez de multiples essayer différentes valeurs (de 0 à moins que le nombre d'éléments de menu). J'imagine que sa le numéro de l'élément est définie, mais je ne suis pas trop sûr.OriginalL'auteur mysticfyst
J'arrive à faire tourner/changement de l'icône de cette façon:
Semble fonctionner OK.
Vous pouvez aussi tout simplement utiliser le
item.setIcon()
à la place.OriginalL'auteur Alen Siljak