【问题标题】:Disable swipe for open drawer but NOT for closing禁用滑动打开抽屉但不关闭
【发布时间】:2023-03-24 05:30:01
【问题描述】:

我想禁用通过滑动打开抽屉,而不是通过滑动或返回按钮关闭。

我在抽屉中使用片段,因此当抽屉打开时,我会替换我的片段并将其添加到后台堆栈。按下后退按钮后,抽屉将按方向关闭。

但是当我使用时

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

喜欢这篇文章: disable the swipe gesture that opens the navigation drawer in android 它禁用所有滑动和后退按钮导航。现在关闭抽屉的唯一方法是触摸抽屉外的屏幕。

是否有替代 LockMode 并保留滑动关闭和后退按钮导航的方法?

注意:我使用的是 Android 5.0.1

【问题讨论】:

    标签: android navigation swipe gesture drawer


    【解决方案1】:

    我找到了实现我想要的解决方法:

    最初我将抽屉模式设置为关闭。打开后,例如通过一个按钮,我解锁抽屉以启用再次关闭的手势。抽屉关闭后,开启锁将重新激活。为此,我正在使用 ActionBarDrawerToggle 的接口

        mDrawerToggle = new ActionBarDrawerToggle(
                getActivity(),                    /* host Activity */
                mDrawerLayout,                    /* DrawerLayout object */
                R.string.navigation_drawer_open,  /* "open drawer" description for accessibility */
                R.string.navigation_drawer_close  /* "close drawer" description for accessibility */
        )
        {
            @Override
            public void onDrawerClosed(View drawerView)
            {
                super.onDrawerClosed(drawerView);
                mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
            }
    
            @Override
            public void onDrawerOpened(View drawerView)
            {
                super.onDrawerOpened(drawerView);
                mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);           
            }
        };
    

    我试图覆盖抽屉布局或其中的一部分,但要得到我想要的东西将是一项艰巨的工作。

    我希望这个解决方案对其他人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-04
      • 1970-01-01
      • 2022-12-11
      • 1970-01-01
      • 2013-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多