禁用滑动打开抽屉但不关闭

Spo*_*ter 5 navigation android gesture swipe drawer

我想通过滑动禁用打开抽屉,但不能通过滑动或后退按钮关闭.

我在抽屉里使用碎片,所以当抽屉打开时我更换我的碎片并将其添加到后台.在按下后退按钮时,抽屉按预期关闭.

但是当我使用时

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
Run Code Online (Sandbox Code Playgroud)

就像在这篇文章中: 禁用在Android中打开导航抽屉的滑动手势 它禁用所有滑动和后退导航.现在关闭抽屉的唯一方法是触摸抽屉外面的屏幕.

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

注意:我使用的是Android 5.0.1

Spo*_*ter 9

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

最初我将drawerMode设置为CLOSED.在打开它之后,例如通过按钮,我解锁抽屉以启用再次关闭的手势.抽屉关闭后,将重新激活Lock for opening.为此,我正在使用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);           
        }
    };
Run Code Online (Sandbox Code Playgroud)

我试图覆盖抽屉布局或其中的一部分,但要获得我想要的东西将是一件很棒的工作.

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