1、首先看一下大概的效果图:
2、新建项目时的style定义:
3、定义溢出菜单的样式:
修改style:
添加theme:
从结果看之前设置的actionMenuTextColor
的颜色已经是文字显示的item
改变了,CS为titleTextColor
设置的颜色
4、针对弹出框的图标加文字显示:
示例:
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:icon="@drawable/ic_menu_settings"
android:title="@string/action_settings"
app:showAsAction="never" />
其中showAsAction的取值有四种:
1)always:总是在导航栏上显示菜单图标
2)ifRoom:如果导航栏右侧有空间,该项就直接显示在导航栏上,不再放入溢出菜单
3)never:从不在导航栏上直接显示,一直放在溢出菜单中
4)withText:如果能在导航栏上显示,除了显示图标,还要显示该项的文字说明
在代码中通过反射机制调用MenuBuilder的setOptionalIconsVisible方法(达到菜单项左侧显示图标)
代码:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater=getMenuInflater();
inflater.inflate(R.menu.main,menu);
if(menu !=null){
if(menu.getClass().getSimpleName().equalsIgnoreCase("MenuBuilder")){
try {
Method method = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE);
method.setAccessible(true);
method.invoke(menu, true);
} catch (Exception e) {
e.printStackTrace();
}
}
}
return true;
}
最终结果如图: