1、当我们点击我们手机上的菜单键时,Android默认是在底部弹出菜单项!但是如果我们还是想在ActionBar的溢出菜单弹出菜单项的话,就可以使用下面定义的方法。
private void forceShowActionBarOverflowMenu() {
try {
ViewConfiguration config = ViewConfiguration.get(this);
Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
if (menuKeyField != null) {
menuKeyField.setAccessible(true);
menuKeyField.setBoolean(config, false);
}
} catch (Exception e) {
e.printStackTrace();
}
}
然后在setContentView(R.layout.activity_action_bar_main)之后调用forceShowActionBarOverfl
2、Android的ActionBar默认的溢出菜单是不能显示图标的,可以通过以下方法达到目的。通过重写onMenuOpened方法,使用反射机制来使得菜单项能够显示图标。
@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) {
}
}
}
return super.onMenuOpened(featureId, menu);
}