Как изменить значок меню в панели действий?
Как изменить значок индекса меню параметров?
![enter image description here]()
Я имею в виду значок (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" />
Ответы
Ответ 1
Следующие строки должны быть обновлены в приложении → 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>
Вот как это можно сделать. Если вы хотите изменить значок переполнения в панели действий
Ответ 2
У меня есть более простое решение, которое отлично сработало для меня:
Drawable drawable = ContextCompat.getDrawable(getApplicationContext(),R.drawable.change_pass);
toolbar.setOverflowIcon(drawable);
Ответ 3
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
получите элемент и внесите необходимые изменения (значок, текст, цвет, фон)
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 item
На основании этого сделайте изменения соответственно в соответствии с вашим требованием.
Ответ 4
//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>
Ответ 5
Это правильно работает в моем случае:
Drawable drawable = ContextCompat.getDrawable(getApplicationContext(),
R.drawable.change_pass);
toolbar.setOverflowIcon(drawable);
Ответ 6
вы можете достичь этого, выполнив
<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>
Ответ 7
Используйте пример 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>
Ответ 8
-
Измените значок пользовательского переполнения панели действий в 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>
-
Поместите пользовательскую тему "MyTheme" в тег приложения AndroidManifest.xml
<application
android:name="com.example.android.MainApp"
android:theme="@style/AppTheme">
</application>
Удачи. @. @
Ответ 9
Короткий и простой способ изменить цвет значка индекса меню опций:
<!-- android:textColorSecondary is the color of the menu overflow icon (three vertical dots) -->
<item name="android:textColorSecondary">@color/optionMenuIconColor</item>
Добавьте выше строку кода в стиль.xml(настраиваемая тема) файл,
Надеюсь, ты получишь ответ, спасибо.
Ответ 10
Если вы хотите изменить значок/заголовок меню на панели действий/панели инструментов программно,
Шаг за шагом
- Объявить меню в классе
частный вар mMenu: меню? = ноль
-
Overide onCreateOptionsMenu метод и найти элемент, поэтому вам нужно изменить
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
}
-
Используйте invalidateOptionsMenu(), чтобы обновить некоторые изменения в меню после выполнения onCreateOptionsMenu. Этот метод восстановит меню
Ответ 11
это работа для меня, просто установите ваше меню XML следующим образом:
<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>