【问题标题】:Disable gesture listener on DrawerLayout在 DrawerLayout 上禁用手势监听器
【发布时间】:2013-06-06 05:33:09
【问题描述】:

如何禁用 DrawerLayout 的手势识别? (从左到右滑动)并且只接受关闭手势(从右到左)并仅使用主页按钮打开抽屉?

【问题讨论】:

    标签: android drawerlayout


    【解决方案1】:

    这对我有用:

    mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
    

    您可以通过点击主页按钮来展开抽屉,并可以使用从右向左滑动手势来关闭它。但是,不再触发从左向右滑动。

    【讨论】:

    • 要解锁它你使用 mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
    • 这在我的情况下不起作用,即使我使用上述解决方案设置了抽屉布局,我也总是在滑动手势时得到一个抽屉。
    • 我也有同样的问题。
    • @SalmanKhakwani 和 reid-mac 在下面查看 Vit-Vetal 的答案。
    • 认为 LOCK_MODE_LOCKED_CLOSED 在 Compat 24.x 中工作,但在较新的兼容库中功能已更改,并且 LOCK_MODE_LOCKED_CLOSED 现在完全阻止显示导航菜单,即使使用汉堡菜单也是如此。现在需要其他解决方案。
    【解决方案2】:

    对于setDrawerLockMode(),这是在代码中,但不在 Android developer 文档中:

    /**
     * The drawer is unlocked.
     */
    public static final int LOCK_MODE_UNLOCKED = 0;
    
    /**
     * The drawer is locked closed. The user may not open it, though
     * the app may open it programmatically.
     */
    public static final int LOCK_MODE_LOCKED_CLOSED = 1;
    
    /**
     * The drawer is locked open. The user may not close it, though the app
     * may close it programmatically.
     */
    public static final int LOCK_MODE_LOCKED_OPEN = 2;
    

    【讨论】:

    【解决方案3】:

    要禁用 DrawerLayout 手势识别,请使用:

    mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN);
    

    然后,要启用从右向左滑动,请检查以下资源: http://android-journey.blogspot.com/2010/01/android-gestures.html

    【讨论】:

      【解决方案4】:

      看起来我发现了错误。例如如果设置:

      android:layout_gravity="right"
      

      android:layout_gravity="left"
      

      对于抽屉内容并使用.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED) 一切都会好的。

      但如果android:layout_gravity="left|center_vertical" 或类似LOCK_MODE_LOCKED_CLOSED 不起作用。

      【讨论】:

      【解决方案5】:

      LOCK_MODE_LOCKED_CLOSED 现在完全阻止了导航菜单的显示,即使是通过汉堡菜单(这可能是不需要的)。以下对我有用:https://stackoverflow.com/a/52160351/377320

      【讨论】:

        【解决方案6】:

        这对我有用:

        mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
        

        您可以通过点击必须触发的汉堡图标或按钮来展开抽屉。但是,不再触发从左向右滑动。

        【讨论】:

          猜你喜欢
          • 2015-10-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-25
          • 1970-01-01
          相关资源
          最近更新 更多