在将android:targetSdkVersion设置为14的情况下,在ICS上显示菜单按钮

5

我有一个现有的应用程序,它具有全屏查看器,使用菜单按钮显示选项。

我已将android:targetSdkVersion设置为14,使整个应用程序主题看起来像一个本地ICS APP。

问题是,当将Activity样式设置为全屏时,我没有菜单按钮,如果显示ActionBar,则占用太多屏幕空间仅用于显示菜单。

在ICS全屏模式下是否有保留常规菜单按钮的方法?

2个回答

2

我认为没有办法只显示ICS的操作栏的一小部分 - 至少会看起来很奇怪。最好的方法是在您的应用程序中创建“菜单按钮”。如果您想要隐藏此按钮以适用于具有硬件菜单按钮的手机,可以检查SDK版本:android.os.Build.VERSION.SDK_INT


2

如果您对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);
  }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接