Как изменить значок меню в панели действий?

Как изменить значок индекса меню параметров?

Введите описание изображения здесь

Я имею в виду значок (3).

Вот мой код:

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

И вот 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" /> 

Следующие строки должны быть обновлены в 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> 

Вот как это можно сделать. Если вы хотите изменить значок переполнения на панели действий

У меня есть более простое решение, которое отлично сработало для меня:

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

1) Объявите menu в своем классе.

 private Menu menu; 

2) В onCreateOptionsMenu выполните следующие действия:

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

3) В onOptionsItemSelected получите элемент и onOptionsItemSelected необходимые изменения (значок, текст, цвет, фон)

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

Примечание .
Если у вас есть 3 пункта меню:
Menu.getItem (0) = 1 элемент,
Menu.getItem (1) = 2 iteam,
Menu.getItem (2) = 3 элемента

Исходя из этого, сделайте изменения соответственно согласно вашему требованию.

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

Используйте пример Syed Raza Mehdi и добавьте в Application theme параметр name=actionOverflowButtonStyle для совместимости.

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

Вы можете добиться этого, выполнив

 <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> 
  1. Измените свой пользовательский значок переполнения Actionbar в 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. Поместите пользовательскую тему «MyTheme» в тег приложения AndroidManifest.xml

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

Повеселись.@.@

Короткий и простой способ изменить цвет значка индекса меню опций:

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

Добавьте выше строку кода в файл стиля .xml (пользовательская тема), надеюсь, вы получите ответ, спасибо.

Это верно в моем случае:

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