Disable hamburger to arrow animation

廉价感情. 提交于 2019-11-28 04:52:05

问题


I am trying to implement a two-drawer layout with the android v7 support library. I have a navigation drawer on the left (Gravity.START) side and a notification drawer on the right (Gravity.END) side. The problem is that I need the hamburger in the action bar to stay a hamburger when the notification drawer is pulled out, but stay animated and change to an arrow if the navigation drawer is pulled out. Currently it changes to an arrow when either one is pulled out. I have successfully disabled the animation by overriding onDrawerSlide(View, float) and only calling to super.onDrawerSlide(View, float) if the View is the navigation drawer and doing nothing if the View is the notification drawer like this:

@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
    }
}

However, once the notification drawer has fully opened, the icon still changes to an arrow. Any idea how to disable this change?


回答1:


Along with handling onDrawerSlide you need to handle both onDrawerOpened and onDrawerClosed:

@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
    }
}



回答2:


Since support v7 version 25.3.0, you can disable the animation

yourActionBarDrawerToggle.setDrawerSlideAnimationEnabled(false);



回答3:


The above accepted answer not working for me but the below one does

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


来源:https://stackoverflow.com/questions/27772072/disable-hamburger-to-arrow-animation

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!