当前位置: 首页 > 知识库问答 >
问题:

禁用导航抽屉,分段切换Home按钮/向上指示灯

汪臻
2023-03-14

我有一个活动,它的contentView是DrawerLayout的实例,它有一个导航抽屉,抽屉指示器显示在操作栏中。活动包含一个fragment,我们称之为listfragment,它包含一个选项列表。单击选项时,我将listfragment替换为detailfragment

此时,我想显示一个“向上”导航选项,而不是导航抽屉指示器。如果通过调用mDrawerToggle.setDrawerIndicatorEnabled(false)禁用抽屉指示器,我可以显示“向上”图标,但这只会删除抽屉图标--它不会删除功能--也就是说,当我单击插入符号时,导航抽屉仍然打开。

此外,在这些子视图中,我想通过从屏幕边缘拖动来禁用抽屉的打开。我尝试通过调用setDrawerLockMode(DrawerLayout.lock_mode_locked_closed)来实现这一功能,但似乎没有禁用此功能。

我尝试扩展ActionBarDrawerToggle类,以防止在单击指示器时打开抽屉--然而,所发生的只是执行了重写操作(“向上”导航),但抽屉仍然打开。

我还实现了在使用片段时在Android导航抽屉图像和向上插入符号之间切换的步骤。它可以显示插入符号,但尽管覆盖了向上按钮功能,菜单仍然打开(应用程序确实导航回来--它也只是打开抽屉)。

所以,长话短说:当我的布局根是drawerlayout时,有没有什么(最好是干净优雅的,但在这一点上,我将使用hacky)方法来实现这些功能:

  1. 用“向上”插入符号替换抽屉指示器(暂时可以通过MDrawerToggle.SetDrawerIndicatorEnabled(false))
  2. 在单击插入符号时防止打开抽屉,而是使用我自己的“向上”功能覆盖
  3. 从屏幕边缘拖动时,防止打开抽屉。

好的,如果我同时重写ActionBarDrawerToggleOnOptionSitemSelected,那么当我单击插入符号时,菜单不会打开。但如果我从边缘拖动它还是会打开的。救命啊!

共有1个答案

卢锋
2023-03-14

短码

public void setDrawerState(boolean isEnabled) {
    if ( isEnabled ) {
        mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
        drawerToggle.onDrawerStateChanged(DrawerLayout.LOCK_MODE_UNLOCKED);
        drawerToggle.setDrawerIndicatorEnabled(true);
        drawerToggle.syncState();

    }
    else {
        mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
        drawerToggle.onDrawerStateChanged(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
        drawerToggle.setDrawerIndicatorEnabled(false);
        drawerToggle.syncState();
    }
}
 类似资料:
  • 我希望能够使用导航抽屉,并根据导航中的选择在不同片段之间进行更改。 我正在使用Android Studio,基本上我所做的是这样的: 使用内置模板“导航抽屉活动”创建了一个新项目 创建了一个空白片段 然后我更改了onNavigationDrawerItemSelected方法中的一些代码。 我的程序崩溃了,给了我很多我不理解的错误。我做错了什么?

  • 我在我的应用程序中使用抽屉菜单,并实现了在NavigationDrawer片段类中切换片段的逻辑。我最近读到片段切换只能从托管活动中发生。 有一个从NavigationDrawerFragment调用的接口,用于通知导航抽屉列表视图中所选位置的MainActivity。 我感到困惑的是,在Mainactive中有一个静态片段,它是使用NavigationDrawer片段中接口提供的位置调用的。 P

  • 我的要求如下图所示,我的导航抽屉应该从右侧打开。我已经实现了这一点。我的导航抽屉从右向左打开。但问题是切换图标总是在左侧。如何将切换图标设置在右侧? 我查过以下SO问题,但没有一个有用: 将导航抽屉中的切换按钮图像图标从右改为左

  • 有没有办法禁用滑动手势来打开导航抽屉?在标签之间滑动时出现菜单真的很烦人。

  • 我有一个带有导航抽屉的应用程序,它为每个菜单项使用片段。 每次单击一个项目时,我都会替换当前片段。 问题是,在用户单击后显示新片段需要很长时间,并且它会被卡住。加载时间最长的片段是一个片段,其中还包含子片段的选项卡(一个片段包含一个RecyclerView)<有什么方法可以加快碎片的装载速度吗?(如果可能的话,可能会提前初始化它们?) 这是我的代码: HalachaFragment。cs(包含选项

  • 我开始创建一个应用程序,它使用一个活动(导航抽屉)和许多片段。但我无法使用工具栏上的“后退”按钮从片段中导航回来。硬件后退按钮工作正常。我知道我需要覆盖选项ItemSelected,捕捉android。R、 id.home,检查后堆栈中是否有内容,然后弹出它。在更改片段后,“burger”按钮变为“back arrow”,但当我单击它时,选项ItemSelected将打开NavigationDra