当前位置: 首页 > 知识库问答 >
问题:

禁用ActionBarDrawerToggle的抽屉指示器,但保留汉堡图标

高玮
2023-03-14

在我的主要活动中,我得到了对抽屉布局和工具栏的引用,如下所示:

    //Set the toolbar
    toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    //Set navigation drawer
    drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    hamburger = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.setDrawerListener(hamburger);
    hamburger.syncState();

在我的一个片段中,我想完全禁用1)滑动打开导航抽屉和2)汉堡/切换按钮切换导航抽屉打开

目前,我正在这样做:

mainActivity = (MainActivity)getActivity();
mainActivity.drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
mainActivity.hamburger.setDrawerIndicatorEnabled(false);
mainActivity.hamburger.syncState();

正确处理滑动-它不再打开抽屉。

不过,汉堡包图标已经完全消失了。理想情况下,我希望汉堡包图标保留在屏幕上,但只是处于禁用状态,以便单击时它不会执行任何操作。有没有替代setDrawerIndicatorEngic的方法可以这样工作?

共有1个答案

宰宣
2023-03-14

实现这一点的最简单方法可能只是将抽屉可拖动设置为切换的向上指示器,并像往常一样启用/禁用抽屉指示器。

初始化ActionBarDrawerToggle后,调用:

hamburger.setHomeAsUpIndicator(new DrawerArrowDrawable(toolbar.getContext()));

DrawerArrowDrawable实际上是ActionBarDrawerTougle用于该动画的内容,其默认状态是汉堡。当您禁用抽屉指示器时,它会切换到Up指示器,但不会接收抽屉打开/关闭调用,因此它只是处于默认状态。重新启用抽屉指示器会切换回切换,这确实会获取抽屉事件,因此动画也会重新启用。

 类似资料:
  • 如何禁用旋转动画点击'抽屉菜单指示器' (汉堡图标)? 我在geny motion emulator(1 GB ram)上使用Htc模型。单击导航抽屉图标时,导航面板滑动(打开和关闭)有轻微滞后。 所以,我认为,禁用动画会使滑动更加平滑。 (我使用抽屉菜单默认模板)

  • 我正在用最新的appcompat支持库实现Lollipop风格的导航抽屉,但问题是汉堡包图标从未显示。仅显示后退图标。 这是我的活动代码 这是我的样式文件 布局文件 在这两种情况下,只有返回箭头显示,我读了很多帖子,但似乎没有什么不同。任何帮助都将不胜感激。

  • 我知道如何改变抽屉图标,如果它在左侧,但我没有找到任何解决方案,改变导航抽屉汉堡图标,如果抽屉是在右侧。任何帮助都是可以感激的。

  • 我无法显示抽屉指示灯。目前,我要么什么都没有,要么” 我使用: v4。小装置。抽屉布局 v7。应用程序。ActionBarDrawerToggle 但是android。应用程序。ActionBar(不支持7) 以下是代码片段:

  • 因此,我构建了一个应用程序,其中包含一些主页作为顶级目标片段。用户可以在主页(一、二、三等)中单击以调出更多详细信息片段(page_one_item1_details、page_two_item3_details等)。这样做时,汉堡按钮会像预期的那样变成向后箭头。 如果我单击Android后退按钮,应用程序将按预期返回主页片段,但如果我单击顶部后退按钮(代替汉堡包),它会弹出抽屉而不是返回。有人能

  • 这个人基本上遇到了与我相同的问题,但是,提供的解决方案没有帮助,也不适用于我,因为我的代码实际上正在调用mDrawerToggle。sycnState()(在延迟的Runnable中)。 我还尝试将其添加到我的片段中创建的onActivityCreated中,它似乎没有任何作用。我不知道syncState到底做了什么,我无法判断它是否正在同步打开的状态(模板代码默认情况下会发生这种情况),然后当抽