在我的主要 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();
在我的一个 fragment 中,我想完全禁用 1)滑动以打开抽屉导航和 2)用于切换抽屉导航打开的汉堡包/切换按钮
目前,我正在这样做:
mainActivity = (MainActivity)getActivity();
mainActivity.drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
mainActivity.hamburger.setDrawerIndicatorEnabled(false);
mainActivity.hamburger.syncState();
正确处理滑动 - 它不再打开抽屉。
汉堡包图标已经完全消失了。理想情况下,我希望汉堡包图标保留在屏幕上,但处于禁用状态,以便单击时不会执行任何操作。是否有 setDrawerIndicatorEnabled
的替代方案可以以这种方式工作?
最佳答案
最简单的方法可能就是将 DrawerArrowDrawable
设置为切换按钮的向上指示器,并像往常一样启用/禁用抽屉指示器。
初始化 ActionBarDrawerToggle
后,调用:
hamburger.setHomeAsUpIndicator(new DrawerArrowDrawable(toolbar.getContext()));
DrawerArrowDrawable
实际上是 ActionBarDrawerToggle
用于该动画的内容,其默认状态是汉堡包。当您禁用抽屉指示器时,它会切换到向上指示器,但不会接收抽屉打开/关闭调用,因此它只是处于默认状态。重新启用抽屉指示器会切换回切换开关,这确实会获取抽屉事件,因此动画也会重新启用。
关于android - 禁用 ActionBarDrawerToggle 抽屉指示器,但保留汉堡包图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36728668/