禁用 ActionBarDrawerToggle 的抽屉指示器,但保留汉堡图标
Disable ActionBarDrawerToggle's drawer indicator, but keep the hamburger icon
在我的主 activity 中,我正在获取对 DrawerLayout 和工具栏的引用,如下所示:
//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) hamburger/toggle 按钮切换导航抽屉打开
目前,我是这样做的:
mainActivity = (MainActivity)getActivity();
mainActivity.drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
mainActivity.hamburger.setDrawerIndicatorEnabled(false);
mainActivity.hamburger.syncState();
正确处理滑动 - 它不再打开抽屉。
虽然汉堡图标已经完全消失了。理想情况下,我希望汉堡包图标保留在屏幕上,但只是处于禁用状态,以便在单击时它不会执行任何操作。是否有 setDrawerIndicatorEnabled
的替代方法可以以这种方式工作?
执行此操作的最简单方法可能是将 DrawerArrowDrawable
设置为切换的向上指示器,并像往常一样设置 enable/disable 抽屉指示器。
初始化 ActionBarDrawerToggle
后,调用:
hamburger.setHomeAsUpIndicator(new DrawerArrowDrawable(toolbar.getContext()));
DrawerArrowDrawable
实际上是 ActionBarDrawerToggle
用于该动画的,它的默认状态是汉堡包。当您禁用抽屉指示器时,它会切换到向上指示器,但不会收到抽屉 opening/closing 调用,因此它只是处于默认状态。重新启用抽屉指示器会切换回切换开关,它会获取抽屉事件,因此动画也会重新启用。
在我的主 activity 中,我正在获取对 DrawerLayout 和工具栏的引用,如下所示:
//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) hamburger/toggle 按钮切换导航抽屉打开
目前,我是这样做的:
mainActivity = (MainActivity)getActivity();
mainActivity.drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
mainActivity.hamburger.setDrawerIndicatorEnabled(false);
mainActivity.hamburger.syncState();
正确处理滑动 - 它不再打开抽屉。
虽然汉堡图标已经完全消失了。理想情况下,我希望汉堡包图标保留在屏幕上,但只是处于禁用状态,以便在单击时它不会执行任何操作。是否有 setDrawerIndicatorEnabled
的替代方法可以以这种方式工作?
执行此操作的最简单方法可能是将 DrawerArrowDrawable
设置为切换的向上指示器,并像往常一样设置 enable/disable 抽屉指示器。
初始化 ActionBarDrawerToggle
后,调用:
hamburger.setHomeAsUpIndicator(new DrawerArrowDrawable(toolbar.getContext()));
DrawerArrowDrawable
实际上是 ActionBarDrawerToggle
用于该动画的,它的默认状态是汉堡包。当您禁用抽屉指示器时,它会切换到向上指示器,但不会收到抽屉 opening/closing 调用,因此它只是处于默认状态。重新启用抽屉指示器会切换回切换开关,它会获取抽屉事件,因此动画也会重新启用。