我有一个现有的应用程序,它具有全屏查看器,使用菜单按钮显示选项。
我已将android:targetSdkVersion设置为14,使整个应用程序主题看起来像一个本地ICS APP。
问题是,当将Activity样式设置为全屏时,我没有菜单按钮,如果显示ActionBar,则占用太多屏幕空间仅用于显示菜单。
在ICS全屏模式下是否有保留常规菜单按钮的方法?
我有一个现有的应用程序,它具有全屏查看器,使用菜单按钮显示选项。
我已将android:targetSdkVersion设置为14,使整个应用程序主题看起来像一个本地ICS APP。
问题是,当将Activity样式设置为全屏时,我没有菜单按钮,如果显示ActionBar,则占用太多屏幕空间仅用于显示菜单。
在ICS全屏模式下是否有保留常规菜单按钮的方法?
我认为没有办法只显示ICS的操作栏的一小部分 - 至少会看起来很奇怪。最好的方法是在您的应用程序中创建“菜单按钮”。如果您想要隐藏此按钮以适用于具有硬件菜单按钮的手机,可以检查SDK版本:android.os.Build.VERSION.SDK_INT
如果您对hackiness和reflection感到舒适,那么有一种方法可以实现。 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);
}
}