studio item icono color change boton bar agregar actionbar android android-actionbar android-menu android-optionsmenu android-icons

item - menu overflow android studio



¿Cómo cambiar el ícono del menú de opciones en la barra de acciones? (9)

¿Cómo cambiar el icono de índice del menú de opciones?

Me refiero al ícono (3).

Aquí está mi código:

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

Y aquí está el archivo 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" />


  1. Cambie el icono de desbordamiento personalizado de la barra de acciones en 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. Coloque el tema personalizado "MyTheme" en la etiqueta de aplicación de AndroidManifest.xml

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

Que te diviertas.@.@


1) Declara el menu en tu clase.

private Menu menu;

2) En onCreateOptionsMenu haga lo siguiente:

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

3) En onOptionsItemSelected , obtenga el elemento y realice los cambios necesarios (icono, texto, color, fondo)

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

Nota :
Si tiene 3 elementos de menú:
menu.getItem (0) = 1 elemento,
menu.getItem (1) = 2 iteam,
menu.getItem (2) = 3 elemento

En función de esto, realice los cambios según sus necesidades.


Esto funciona correctamente en mi caso:

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


Las siguientes líneas se deben actualizar en la aplicación -> 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>

Así es como se puede hacer. Si desea cambiar el icono de desbordamiento en la barra de acciones


Obtuve una solución más simple que funcionó perfectamente para mí:

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


Una manera corta y fácil de cambiar el color del ícono de índice del menú de opciones es:

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

Agregue la línea de código anterior en el archivo de estilo .xml (tema personalizado). Espero que obtenga respuesta. Gracias.


Utilice el ejemplo de Syed Raza Mehdi y agregue el Application theme el parámetro name=actionOverflowButtonStyle para compatibilidad.

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


puedes lograr esto haciendo

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


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