gpt4 book ai didi

android - ActionBarSherlock 中的强制溢出菜单

转载 作者:IT老高 更新时间:2023-10-28 22:04:23 24 4
gpt4 key购买 nike

我希望在 ICS 之前的设备 (2.3 - 2.1) 上使用 4.0+ 溢出菜单。我将 HoloEverywhere 与 ActionBarSherlock 一起使用。

我尝试了以下解决方案:

ActionBarSherlock & HoloEverywhere - Forcing Overflow?

但它不起作用,因为 absForceOverflow 不存在。它是在最新版本中删除还是什么?我检查了 ABS 和 HE 库项目的 R 文件,但该字段根本不存在。

我的应用程序的主题设置为 @style/Holo.Theme.Sherlock.Light 这是我试图继承并添加 absForceOverflow 参数的主题设置为 true

最佳答案

从 ActionbarSherlock 4.2 开始,我们失去了管理溢出菜单可见性的能力。要使其发挥作用,您需要结合 2 种方法:

  1. 要强制 Android 3.x (honeycomb) 及更高版本的菜单可见性,您需要使用 this hack + 添加检查 Android 版本:

    public static final int DEVICE_VERSION   = Build.VERSION.SDK_INT;
    public static final int DEVICE_HONEYCOMB = Build.VERSION_CODES.HONEYCOMB;
    if (DEVICE_VERSION >= DEVICE_HONEYCOMB)
    // Code from answer above
  2. 预蜂窝设备的打开菜单:

    • 打开ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ActionMenuPresenter.java,进入方法reserveOverflow
    • 将原来的替换为:

      public static boolean reserveOverflow(Context context) { 返回真;}

    这将强制显示菜单...

    • 但是当点击菜单按钮时菜单弹出不显示。为了实现这一点,我们需要在您的 activity 类中覆盖它:

      @Override
      public boolean onKeyUp(int keyCode, KeyEvent event) {
      if (DEVICE_VERSION < DEVICE_HONEYCOMB) {
      if (event.getAction() == KeyEvent.ACTION_UP &&
      keyCode == KeyEvent.KEYCODE_MENU) {
      openOptionsMenu();
      return true;
      }
      }
      return super.onKeyUp(keyCode, event);
      }

执行此操作后,您应该拥有适用于所有 Android 版本的绝对有效的溢出操作栏菜单。

关于android - ActionBarSherlock 中的强制溢出菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13179620/

24 4 0