web-dev-qa-db-fra.com

Comment changer l'icône du menu des options dans la barre d'action?

Comment changer l'icône d'index du menu d'options?

enter image description here

Je veux dire icône (3).

Voici mon code:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.options, menu);

    return true;
}

Et voici le fichier XML:

<item Android:id="@+id/Bugreport"
    Android:title="@string/option_bugreport" />

<item Android:id="@+id/Info"
    Android:title="@string/option_info" />

<item Android:id="@+id/About"
    Android:title="@string/option_about" />

39
smartmouse

Les lignes suivantes doivent être mises à jour dans app -> main -> res -> values ​​-> Styles.xml

 <!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
    <!-- All customizations that are NOT specific to a particular API-level can go here. -->
    <item name="Android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item>
</style>

<!-- Style to replace actionbar overflow icon. set item 'Android:actionOverflowButtonStyle' in AppTheme -->
<style name="MyActionButtonOverflow" parent="Android:style/Widget.Holo.Light.ActionButton.Overflow">
    <item name="Android:src">@drawable/ic_launcher</item>
    <item name="Android:background">?android:attr/actionBarItemBackground</item>
    <item name="Android:contentDescription">"Lala"</item>
</style>

Voici comment cela peut être fait. Si vous souhaitez modifier l'icône de débordement dans la barre d'action

55
Syed Raza Mehdi

J'ai eu une solution plus simple qui a parfaitement fonctionné pour moi:

Drawable drawable = ContextCompat.getDrawable(getApplicationContext(),R.drawable.change_pass);
        toolbar.setOverflowIcon(drawable);
49
Parth Anjaria

1) Déclarez menu dans votre classe.

private Menu menu;

2) Dans onCreateOptionsMenu, procédez comme suit: 

public boolean onCreateOptionsMenu(Menu menu) {
    this.menu = menu;
    getMenuInflater().inflate(R.menu.menu_orders_screen, menu);
    return true;
}   

3) Dans onOptionsItemSelected, récupérez l'élément et apportez les modifications nécessaires (icône, texte, couleur, arrière-plan)

public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if (id == R.id.action_search) {
        return true;
    }
    if (id == R.id.ventor_status) {
        return true;
    }
    if (id == R.id.action_settings_online) {
        menu.getItem(0).setIcon(getResources().getDrawable(R.drawable.history_converted));
        menu.getItem(1).setTitle("Online");
        return true;
    }
    if (id == R.id.action_settings_offline) {
        menu.getItem(0).setIcon(getResources().getDrawable(R.drawable.cross));
        menu.getItem(1).setTitle("Offline");
        return true;
    }

    return super.onOptionsItemSelected(item);
}

Remarque
Si vous avez 3 éléments de menu: 
menu.getItem (0) = 1 élément,
menu.getItem (1) = 2 iteam, 
menu.getItem (2) = 3 élément 

Sur cette base, apportez les modifications en fonction de vos besoins. 

9
Surendar D
//just edit menu.xml file    
//add icon for item which will change default setting icon
//add sub menus


 ///menu.xml file


    <item
            Android:id="@+id/action_settings"
            Android:orderInCategory="100"
            Android:title="@string/action_settings"
            Android:icon="@drawable/your_icon"
            app:showAsAction="always" >

            <menu>

                <item Android:id="@+id/action_menu1"
                    Android:icon="@Android:drawable/ic_menu_preferences"
                    Android:title="menu 1" />

                <item Android:id="@+id/action_menu2"
                    Android:icon="@Android:drawable/ic_menu_help"
                    Android:title="menu 2" />

            </menu>
        </item>
8
Aditya varale

Cela fonctionne correctement dans mon cas:

Drawable drawable = ContextCompat.getDrawable(getApplicationContext(),
                                              R.drawable.change_pass);
toolbar.setOverflowIcon(drawable);
4
user7957410

Utilisez l'exemple de Syed Raza Mehdi et ajoutez le paramètre Application theme au paramètre name=actionOverflowButtonStyle pour assurer la compatibilité.

<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
    <!-- All customizations that are NOT specific to a particular API-level can go here. -->
    <item name="Android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item>

    <!-- For compatibility -->
    <item name="actionOverflowButtonStyle">@style/MyActionButtonOverflow</item>

</style>
3
Joao Ferreira

vous pouvez y parvenir en faisant 

<item
    Android:id="@+id/menus"
    Android:actionProviderClass="@Android:style/Widget.Holo.ActionButton.Overflow"
    Android:icon="@drawable/your_icon"
    Android:showAsAction="always">
  <item Android:id="@+id/Bugreport"
   Android:title="@string/option_bugreport" />

  <item Android:id="@+id/Info"
  Android:title="@string/option_info" />

 <item Android:id="@+id/About"
   Android:title="@string/option_about" />
  </item>
3
Pravin
  1. Changez l’icône de débordement personnalisée de votre barre d’action dans styles.xml

     <resources>
        <!-- Base application theme. -->
        <style name=“MyTheme" parent="@Android:style/Theme.Holo">
           <!-- Pointer to Overflow style DONT forget! -->
           <item name="Android:actionOverflowButtonStyle">@style/MyOverFlow</item>
        </style>
    
        <!-- Styles -->
        <style name="MyOverFlow" parent="@Android:style/Widget.Holo.ActionButton.Overflow">
            <item name="Android:src">@drawable/ic_your_action_overflow</item>
        </style>
     </resources>
    
  2. Mettez le thème personnalisé "MyTheme" dans la balise d'application de AndroidManifest.xml

    <application
        Android:name="com.example.Android.MainApp"
        Android:theme="@style/AppTheme">
    </application>
    

S'amuser.@.@

1
Luna Kong

Voici un moyen simple et rapide de changer la couleur de l’icône d’index du menu des options:

<!-- Android:textColorSecondary is the color of the menu overflow icon (three vertical dots) -->
<item name="Android:textColorSecondary">@color/optionMenuIconColor</item>

Ajouter la ligne de code ci-dessus dans le fichier style .xml (thème personnalisé), J'espère que vous obtiendrez une réponse, Merci. 

0
AMI CHARADAVA