如果当前Activity的主题带有标题,比如用的是
Theme.AppCompat.Light.DarkActionBar
则重写openOptionsMenu:
@Override
public void openOptionsMenu() {
final View toolbar = getWindow().getDecorView().findViewById(R.id.action_bar);
if (toolbar instanceof Toolbar) {
((Toolbar)toolbar).showOverflowMenu();
} else {
super.openOptionsMenu();
}
}
通过调用系统默认的toolbar的showOverflowMenu来打开菜单。
如果当前Activity是没有主题的,即用的主题是:
Theme.AppCompat.Light.NoActionBar
则需要自己先添加一个toolbar并通过setSupportActionBar方法将其设置成ActionBar。此时调用默认的openOptionsMenu()方法也是可以弹出菜单界面,不过菜单界面是从底部弹出的。
如果需要菜单界面从右上角按钮中弹出,则可以调用toolbar的showOverflowMenu方法,如下:
@Override
public void openOptionsMenu() {
final View toolbar = findViewById(R.id.toolbar);//填入你的toolbar的ID
if (toolbar instanceof Toolbar) {
((Toolbar)toolbar).showOverflowMenu();
} else {
super.openOptionsMenu();
}
}
本篇博客到此结束,有疑问或者有更好的方法欢迎提出,谢谢。