Android 禁用ActionBarDrawerToggle';s抽屉指示灯,但保留汉堡图标

Android 禁用ActionBarDrawerToggle';s抽屉指示灯,但保留汉堡图标,android,android-fragments,android-actionbar,android-navigation,navigation-drawer,Android,Android Fragments,Android Actionbar,Android Navigation,Navigation Drawer,在我的主要活动中,我获得了对抽屉布局和工具栏的引用,如下所示: //Set the toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); //Set navigation drawer drawer = (DrawerLayout) findViewById(R.id.drawer_layout); hamburger = new

在我的主要活动中,我获得了对抽屉布局和工具栏的引用,如下所示:

    //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();
mainActivity = (MainActivity)getActivity();
mainActivity.drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
mainActivity.hamburger.setDrawerIndicatorEnabled(false);
mainActivity.hamburger.syncState();
在我的一个片段中,我想完全禁用1)滑动以打开导航抽屉,2)汉堡/切换按钮以切换导航抽屉的打开

目前,我是这样做的:

    //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();
mainActivity = (MainActivity)getActivity();
mainActivity.drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
mainActivity.hamburger.setDrawerIndicatorEnabled(false);
mainActivity.hamburger.syncState();
刷卡操作正确-不再打开抽屉


不过,汉堡包的图标已经完全消失了。理想情况下,我希望汉堡包图标保持在屏幕上,但只是处于禁用状态,以便单击时它不会做任何事情。有没有一种方法可以替代设置抽屉指示灯可启用的方法?

最简单的方法可能是只设置一个
drawerrowDrawable
作为开关的向上指示灯,然后像往常一样启用/禁用抽屉指示灯

初始化
ActionBarDrawerToggle
后,调用:

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

DrawarRowDrawable
实际上是
ActionBarDrawerToggle
用于该动画的对象,其默认状态为hamburger。当您禁用抽屉指示灯时,它会切换到向上指示灯,但该指示灯不会接收抽屉打开/关闭呼叫,因此它只是处于默认状态。重新启用抽屉指示器会切换回切换,切换会获取抽屉事件,因此动画也会重新启用。

什么是
汉堡
?(是导航抽屉、工具栏还是其他……是什么?@RayVaniya对不起,我不明白你在问什么。@RayVaniya噢,你是说,我的答案中的
汉堡
变量是什么?这是
动作bardrawertoggle
。这正是OP在他们的问题中给它起的名字。@MikeM嗯,我正在用自定义工具栏实现CustomNavigationDrawer,我添加了用于打开和关闭抽屉的自定义按钮,但内置的汉堡按钮是可见的,我想禁用内置的汉堡按钮,那么我如何禁用或隐藏该按钮。@RayVaniya您在Android Studio中使用了导航抽屉模板吗?如果是这样,我认为它会自动在代码IIRC中包含一个
ActionBarDrawerToggle
。只需删除所有代码即可。