我有一个带有全屏查看器的现有应用程序,它使用菜单按钮显示选项。我已将 android:targetSdkVersion 设置为 14,以使整个应用程序主题看起来像原生 ICS 应用程序。
问题是,当将 Activity 样式设置为全屏时,我没有菜单按钮,如果我显示 ActionBar,会占用应用程序太多的屏幕空间来显示菜单。
有没有办法在 ICS 全屏显示时保持常规菜单按钮?
我有一个带有全屏查看器的现有应用程序,它使用菜单按钮显示选项。我已将 android:targetSdkVersion 设置为 14,以使整个应用程序主题看起来像原生 ICS 应用程序。
问题是,当将 Activity 样式设置为全屏时,我没有菜单按钮,如果我显示 ActionBar,会占用应用程序太多的屏幕空间来显示菜单。
有没有办法在 ICS 全屏显示时保持常规菜单按钮?
我想没有办法只显示 ICS 操作栏的一小部分 - 至少它看起来很奇怪。对您来说最好的方法是在您的应用程序“菜单按钮”中的某个位置创建。如果您想为带有硬件菜单按钮的手机隐藏此按钮,可以选择检查 SDK 版本:
android.os.Build.VERSION.SDK_INT
如果您对 hackiness 和反思感到满意,那么有一种方法。Daniel Lew在他的博客中提到了它。他适当地指出,这实际上并不意味着与生产代码一起使用。Android 开发人员将来可能会取消此功能。
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);
}
}