1、一直显示Overflow
在android 5.0之前的版本,是默认不显示overflow的(就是这个),若要显示overflow图标,可以用以下的方法:
- 在values-v14(若没有,手动创建)中设置以下的样式:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="android:actionOverflowButtonStyle">@style/buttonOverflowStyle</item>
</style>
<style name="buttonOverflowStyle">
<item name="android:src">@mipmap/ic_input_add</item>
</style>
</resources>
- 利用反射,设置overflow总是显示在ActionBar上
//设置overflowButton总是显示
private void setOverflowButtonAlways(){
//获取ViewConfiguration
ViewConfiguration configuration=ViewConfiguration.get(this);
try {
//利用反射获取ViewConfiguration的一个变量
Field field=ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
field.setAccessible(true);
field.setBoolean(configuration,false);//重新设置sHasPermanentMenuKey的值
} catch (Exception e) {
e.printStackTrace();
}
}
注意:在默认的actionbar中,有menu按键的手机是不会显示这个overflow menu菜单的,需要通过menu键将其呼出了。
2、在Overflow的菜单中显示图标
Overflow上是默认不显示图标的,要在菜单中显示图标可以用以下的方法
//在菜单上显示图标
@Override
public boolean onMenuOpened(int featureId, Menu menu) {
if (featureId == Window.FEATURE_ACTION_BAR && menu != null)
{
if (menu.getClass().getSimpleName().equals("MenuBuilder"))
{
try
{
Method m = menu.getClass().getDeclaredMethod(
"setOptionalIconsVisible", Boolean.TYPE);
m.setAccessible(true);
m.invoke(menu, true);
} catch (Exception e)
{
e.printStackTrace();
}
}
}
return super.onMenuOpened(featureId, menu);
}