在我的主要活动中,我得到了对我的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
替代方法可以这样工作?
答案 0 :(得分:2)
最简单的方法是将DrawerArrowDrawable
设置为切换的向上指示器,并照常启用/禁用抽屉指示器。
在您初始化ActionBarDrawerToggle
后,请致电:
hamburger.setHomeAsUpIndicator(new DrawerArrowDrawable(toolbar.getContext()));
DrawerArrowDrawable
实际上是ActionBarDrawerToggle
用于该动画的内容,其默认状态是汉堡包。当您禁用抽屉指示器时,它会切换到向上指示器,但是它不会接收抽屉打开/关闭呼叫,因此它只是处于默认状态。重新启用抽屉指示器切换回切换,这会获得抽屉事件,因此动画也会重新启用。