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

时间:2016-04-19 20:21:43

标签: android android-fragments android-actionbar android-navigation android-navigation-drawer

在我的主要活动中,我得到了对我的DrawerLayout和Toolbars的引用:

    //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();

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

汉堡包图标完全消失了。理想情况下,我希望汉堡包图标保留在屏幕上,但只是处于禁用状态,以便在点击时它不会做任何事情。是否有setDrawerIndicatorEnabled替代方法可以这样工作?

1 个答案:

答案 0 :(得分:2)

最简单的方法是将DrawerArrowDrawable设置为切换的向上指示器,并照常启用/禁用抽屉指示器。

在您初始化ActionBarDrawerToggle后,请致电:

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

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