【问题标题】:Disable hamburger to arrow animation禁用汉堡到箭头动画
【发布时间】:2015-03-02 13:12:55
【问题描述】:

我正在尝试使用 android v7 支持库来实现两抽屉布局。我在左侧 (Gravity.START) 侧有一个导航抽屉,在右侧 (Gravity.END) 侧有一个通知抽屉。问题是当拉出通知抽屉时,我需要操作栏中的汉堡保持汉堡,但如果拉出导航抽屉,则保持动画并变为箭头。目前,当任何一个被拉出时,它都会变成一个箭头。我已经通过覆盖onDrawerSlide(View, float) 成功禁用了动画,并且如果视图是导航抽屉,则只调用super.onDrawerSlide(View, float),如果视图是这样的通知抽屉,则什么也不做:

@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
    // Make sure it was the navigation drawer
    if(drawerView.equals(navigationDrawer)) {
        super.onDrawerSlide(drawerView, slideOffset);
    }
    else {
        // Do nothing
    }
}

但是,一旦通知抽屉完全打开,图标仍会变为箭头。知道如何禁用此更改吗?

【问题讨论】:

  • 尝试对onDrawerOpenedonDrawerClosed做同样的事情
  • @EugenPechanec 非常简单的修复并完全实现了我想要的。太感谢了。发布为答案,我会接受。
  • 很高兴能帮上忙,祝您的应用好运。

标签: android android-actionbar navigation-drawer android-5.0-lollipop android-support-library


【解决方案1】:

除了处理onDrawerSlide,您还需要同时处理onDrawerOpenedonDrawerClosed

@Override
public void onDrawerOpened(View drawerView, float slideOffset) {
    // Make sure it was the navigation drawer
    if(drawerView.equals(navigationDrawer)) {
        super.onDrawerOpened(drawerView, slideOffset);
    }
    else {
        // Do nothing
    }
}

@Override
public void onDrawerClosed(View drawerView, float slideOffset) {
    // Make sure it was the navigation drawer
    if(drawerView.equals(navigationDrawer)) {
        super.onDrawerClosed(drawerView, slideOffset);
    }
    else {
        // Do nothing
    }
}

【讨论】:

  • ActionBarDrawerToggle 中没有类似 onDrawerOpened(View drawerView, float slideOffset) 的方法。那么它是如何工作的
  • 只使用onDrawerOpened(View),无论如何我在示例中没有使用float slideOffset 参数。看起来该方法出于同样的原因已被弃用。
  • @Aurélien Lepage 的答案是正确的答案,因为谷歌已经很容易在新版本的支持库中禁用侧向动画。 yourActionBarDrawerToggle.setDrawerSlideAnimationEnabled(false);
【解决方案2】:

由于支持v7版本25.3.0,可以禁用动画

yourActionBarDrawerToggle.setDrawerSlideAnimationEnabled(false);

【讨论】:

    【解决方案3】:

    上面接受的答案对我不起作用,但下面的答案对我有用

    @Override
    public void onDrawerSlide(View drawerView, float slideOffset) {
        super.onDrawerSlide(drawerView, 0); // this disables the animation 
    }
    

    【讨论】:

      猜你喜欢
      • 2015-01-22
      • 1970-01-01
      • 2017-06-11
      • 1970-01-01
      • 2015-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多