11

我已经用 actionbar sherlock 实现了新的抽屉,并且显然 actionbar 保持在相同的状态。

我已经实现了 ActionBarDrawerToggle 接口来处理打开/关闭回调。

    actionBarDrawerToggle = new ActionBarDrawerToggle(this, menu, R.drawable.ic_launcher,
            R.string.app_name, R.string.app_name) {
        @Override
        public void onDrawerOpened(View drawerView) { 
            super.onDrawerOpened(drawerView);
            drawerOpened = true;
            sliderButton.setBackgroundResource(R.drawable.tab_bar_menu_icon_push);
        }

        @Override
        public void onDrawerClosed(View drawerView) {
            super.onDrawerClosed(drawerView);
            drawerOpened = false;
            sliderButton.setBackgroundResource(R.drawable.tab_menu);
        }
    };
    menu.setDrawerListener(actionBarDrawerToggle);

如何将操作栏设置为与抽屉菜单一起移动?

4

2 回答 2

16

这些问题对我来说似乎有点令人困惑,但我想如果你有正确的链接和一些历史,这是一个非常简单的答案,我将在这里尝试提供:

正如您在官方设计指南中看到的那样>>>LINK<<<:抽屉应该覆盖主要内容,并且 ActionBar 和内容都保持固定,根本不会移动。唯一在屏幕上移动的元素是实际的抽屉。

但这种模式仅在一个月前的 Google I/O 2013 期间发布。在此之前,每个 Google 应用程序都在做开发者当时想做的任何事情。现在 Google I/O 已经通过,它们都运行到足以满足官方指南的要求(其中大部分已经更新,例如 Gmail 和 G+)。

如果你不想遵循官方的指导方针,并且想让整个应用程序(包括 ActionBar 和内容)在抽屉打开时移出屏幕,最简单的方法是使用优秀的 SlidingMenu 库>>>LINK< << . 如果您阅读示例并在网上搜索,我相信您会找到实现它的方法。

如果您想遵循官方指南,但也想使用 ActionBarSherlock(这就是我在当前项目中所做的),您可以在官方项目的这个 GIT 拉取请求中找到与 ActionBarSherlock 兼容的 ActionBarDrawerToggle >>>LINK <<<但是这个拉取请求没有被接受,所以你可以从那里复制代码并放在你的项目中,或者你可以在这里使用原始 ActionBarSherlock 的这个分支>>>LINK<<<那家伙已经实现并且已经应用了我建议的修复。

我希望这回答了你的问题。

于 2013-06-19T21:38:55.617 回答
2

我最近正在阅读与此类似的问题。它可能会给出一些答案: 谷歌是如何做到这一点的?在 Android 应用程序中滑动 ActionBar

于 2013-06-19T21:13:28.520 回答