正确的解决方案是使用 anActionBar
但可能有一些技巧可以让溢出菜单出现。
具体来说,FLAG_NEEDS_MENU_KEY
您可以通过反射访问一个隐藏的窗口标志。这是一个代码片段(来自此博客):
public static void addLegacyOverflowButton(Window window) {
if (window.peekDecorView() == null) {
throw new RuntimeException("Must call addLegacyOverflowButton() after setContentView()");
}
try {
window.addFlags(WindowManager.LayoutParams.class.getField("FLAG_NEEDS_MENU_KEY").getInt(null));
}
catch (NoSuchFieldException e) {
// Ignore since this field won't exist in most versions of Android
}
catch (IllegalAccessException e) {
Log.w(TAG, "Could not access FLAG_NEEDS_MENU_KEY in addLegacyOverflowButton()", e);
}
}
我在几个 Nexus 设备上对此进行了测试,并且可以正常工作。博客上的评论指出,有些设备无法正常工作。谨慎使用。并使用ActionBar
,真的。