如何更改选项菜单的索引图标?
我指的是图标(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" />
答案 0 :(得分:58)
以下行应在 app - &gt;中更新主要 - &gt; res - &gt;值 - &gt; 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>
这是如何做到的。如果要更改操作栏中的溢出图标
答案 1 :(得分:51)
我得到了一个更简单的解决方案,对我来说非常有用:
Drawable drawable = ContextCompat.getDrawable(getApplicationContext(),R.drawable.change_pass);
toolbar.setOverflowIcon(drawable);
答案 2 :(得分:9)
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项
基于此,根据您的要求进行相应的更改。
答案 3 :(得分:8)
//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>
答案 4 :(得分:4)
这适用于我的情况:
Drawable drawable = ContextCompat.getDrawable(getApplicationContext(),
R.drawable.change_pass);
toolbar.setOverflowIcon(drawable);
答案 5 :(得分:3)
您可以通过执行
来实现这一目标<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>
答案 6 :(得分:3)
使用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>
答案 7 :(得分:1)
在styles.xml中更改Actionbar的自定义溢出图标
<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>
自定义主题&#34; MyTheme&#34;在AndroidManifest.xml的应用程序标记中
<application
android:name="com.example.android.MainApp"
android:theme="@style/AppTheme">
</application>
玩得开心。@。@
答案 8 :(得分:1)
检查此方法可能会起作用:(在Kotlin中)
toolBar.menu.getItem(indexNumber).setIcon(R.drawable.ic_myIcon)
答案 9 :(得分:0)
更改选项菜单索引图标颜色的简便方法是:
<!-- android:textColorSecondary is the color of the menu overflow icon (three vertical dots) -->
<item name="android:textColorSecondary">@color/optionMenuIconColor</item>
将以上代码行添加到样式 .xml(自定义主题)文件中, 希望你能得到答案,谢谢。
答案 10 :(得分:0)
如果要以编程方式更改操作栏/工具栏中的图标/标题菜单,
逐步执行
private var mMenu:菜单? =空
覆盖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
}
在执行onCreateOptionsMenu之后,使用invalidateOptionsMenu()更新菜单中的某些更改。此方法将重新创建菜单
答案 11 :(得分:0)
这对我有用,只需像这样设置您的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>
答案 12 :(得分:0)
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/logout"
android:icon="@drawable/logout"
android:title="Log Out"
app:showAsAction="always"
/>
</menu>
这帮了我大忙!