【问题标题】:Is there any way use new DrawerLayout with ActionBarSharlock?有什么方法可以将新的 DrawerLayout 与 ActionBarSharlock 一起使用?
【发布时间】:2026-01-17 19:55:01
【问题描述】:

我想知道是否有任何方法可以将支持库中的新 DrawerLayout 与 ActionBarSherlock 一起使用? 我找到了 ICS+ 的解决方法,但我需要的是对 android 2.2+ 的支持 问题是 ABS 仅在 ICS+ 时保留原始 android.view.MenuItem 的引用,但对于旧版本,存在不保留原始引用的内部实现。

【问题讨论】:

  • 我能够毫无困难地实现它。如果您遇到问题,如果我们不知道是什么问题,我们将无法提供帮助。
  • 你是用 ActionBarSherlock 实现的吗?当 MenuItem 的类型为 android.view.MenuItem 时,您如何处理新的 DrawerLayout 在 public boolean onOptionsItemSelected(MenuItem item) 中需要 mDrawerToggle.onOptionsItemSelected(MenuItem) 的事实?当您扩展SherlockActivity 时,您将获得com.actionbarsherlock.view.MenuItem 类型的MenuItem
  • 不同,我没有实现抽屉切换。但是 Drawer 确实可以与 ActionBarSherlock 一起使用,我不确定在多大程度上,我建议使用您刚刚提出的问题创建一个新问题。

标签: android actionbarsherlock


【解决方案1】:

如果您正在寻找一种在用户从 ActionBar 触摸图标时打开和关闭 DrawerLayout 的方法,您可以使用这个:

switch (item.getItemId()) {
    case android.R.id.home:
        if (mDrawerLayout.isDrawerOpen(mDrawerList)) {
            mDrawerLayout.closeDrawer(mDrawerList);
        } else {
            mDrawerLayout.openDrawer(mDrawerList);
        }
        return true;

    }
    return true;
}

【讨论】:

  • 这正是我想要的。谢谢@enrique
  • @justin.harrison 太好了!很高兴知道这一点!
【解决方案2】:

GitHub上有一个项目完美运行

SherlockNavigationDrawer

希望对你有帮助

【讨论】:

  • 为了好奇,这个例子所做的基本上是用标准的 Android MenuItem 类包装了 sherlock MenuItem 类,以便可以使用通常的 DrawerLayout.onOptionsItemSelected() 方法。
  • 该解决方法是否支持抽屉图标?由于其他原因,我终于用 AppCompat 进行了迁移,但很高兴知道。