4

我想用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 
    } 
} 

然而,一旦通知抽屉已经完全打开,图标仍会变成箭头。任何想法如何禁用此更改?

+1

尝试做同样的'onDrawerOpened'和'onDrawerClosed' –

+0

@EugenPechanec非常简单的修复,实现了我一直在寻找的东西。非常感谢。作为回答发布,我会接受。 – steve

+0

很高兴我可以帮助你,与你的应用程序祝你好运。 –

回答

4

随着处理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 
    } 
} 
+0

ActionBarDrawerToggle中没有类似onDrawerOpened(View drawerView,float slideOffset)的方法。那么它是如何工作的 – user1517638

+0

只要使用'onDrawerOpened(View)',我没有在示例中使用'float slideOffset'参数。看起来这个方法由于同样的原因而被弃用。 –

0

上述接受的答案不是为我工作,但下面的人做

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

由于支持V7版本25.3。 0,您可以禁用动画

yourActionBarDrawerToggle.setDrawerSlideAnimationEnabled(false);