webentwicklung-frage-antwort-db.com.de

Wie kann ich das Optionsmenüsymbol in der Aktionsleiste ändern?

Wie kann ich das Index-Symbol des Optionsmenüs ändern?

enter image description here

Ich meine Ikone (3).

Hier ist mein Code:

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

    return true;
}

Und hier ist die XML-Datei:

<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

Die folgenden Zeilen sollten in app -> main -> res -> values ​​-> Styles.xml aktualisiert werden.

 <!-- 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>

So kann es gemacht werden. Wenn Sie das Überlaufsymbol in der Aktionsleiste ändern möchten

55
Syed Raza Mehdi

Ich habe eine einfachere Lösung bekommen, die perfekt für mich funktioniert hat:

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

1) Deklarieren Sie menu in Ihrer Klasse.

private Menu menu;

2) In onCreateOptionsMenu mache folgendes: 

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

3) Rufen Sie in onOptionsItemSelected das Element ab und nehmen Sie die gewünschten Änderungen vor (Symbol, Text, Farbe, Hintergrund).

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);
}

Hinweis
Wenn Sie 3 Menüpunkte haben: 
menu.getItem (0) = 1 Eintrag,
menu.getItem (1) = 2 iteam, 
menu.getItem (2) = 3 Element 

Auf dieser Grundlage nehmen Sie die Änderungen entsprechend Ihrer Anforderung vor. 

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

Das funktioniert in meinem Fall richtig:

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

Verwenden Sie das Beispiel von Syed Raza Mehdi und fügen Sie aus Application theme den name=actionOverflowButtonStyle-Parameter zur Kompatibilität hinzu.

<!-- 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

sie können dies erreichen, indem Sie tun 

<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. Ändern Sie Ihr benutzerdefiniertes Überlaufsymbol von Actionbar in 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. Setzen Sie das benutzerdefinierte Thema "MyTheme" in das Anwendungs-Tag von AndroidManifest.xml

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

Habe Spaß[email protected]@

1
Luna Kong

Eine kurze und einfache Möglichkeit, die Farbe des Optionsmenüsymbols zu ändern, ist:

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

Fügen Sie die obige Codezeile in die Datei style . Xml (benutzerdefiniertes Design). 

0
AMI CHARADAVA

Wenn Sie das Symbol-/Titelmenü in der Aktionsleiste/Symbolleiste programmgesteuert ändern möchten,

Schritt für Schritt

  1. Menü in der Klasse deklarieren

private var mMenu: Menü? = null

  1. Überschreiben Sie die onCreateOptionsMenu-Methode und suchen Sie das Element, damit Sie es ändern müssen

    override fun onCreateOptionsMenu(menu: Menu?): Boolean {
    mMenu = menu
    menuInflater.inflate(R.menu.menu, menu)
    if (mIsFavorite){
        mMenu?.findItem(R.id.action_favorite)?.icon = yourDrawable
    } else {
        mMenu?.findItem(R.id.action_favorite)?.icon = yourDrawable
    }
    return true
    

    }

  2. Verwenden Sie invalidateOptionsMenu (), um einige Änderungen im Menü zu aktualisieren, nachdem onCreateOptionsMenu ausgeführt wurde. Diese Methode erstellt das Menü neu

0
Hai Rom

diese Arbeit für mich, stellen Sie einfach Ihr XML-Menü wie folgt ein:

<menu xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto">
    <item
        Android:icon="@drawable/your_icon"
        Android:title="menu"
        app:showAsAction="always">
        <menu>

            <item
                Android:id="@+id/action_menu1"
                Android:orderInCategory="1"
                Android:title="menu 1" />

            <item
                Android:id="@+id/action_menu2"
                Android:orderInCategory="2"
                Android:title="menu 2" />

        </menu>
    </item>
</menu>
0
IRvanFauziE