web-dev-qa-db-fra.com

désactiver le geste de balayage qui ouvre le tiroir de navigation dans android

Je suis le guide des tiroirs de navigation de Google et j'aimerais l'ajouter à une activité comportant des onglets et des gestes.

J'aimerais désactiver le geste pour ouvrir le tiroir de navigation. Quelqu'un sait-il comment procéder?

167
user1627990

Tu devrais utiliser:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

Cela fonctionne avec moi, le glissement pour ouvrir le tiroir a été désactivé.

Si cela ne fonctionne toujours pas, vérifiez la réponse fournie ici .

395
Tran Hieu

pour le verrouillage, vous pouvez faire ceci:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

et pour déverrouiller:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
89
saleh sereshki

Ajoutez également une valeur de gravité lorsque vous utilisez setDrawerLockMode () ;

Faire ceci:

drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END);

Cela devrait fonctionner comme un charme

13
Burhan Shakir

Pour désactiver le balayage, remplacez onInterceptTouchEvent et onTouchEvent sur DrawerLayout et donnez-leur la valeur false.

3
HelloWorld

La réponse pour désactiver le balayage est la bonne. Je pense que LOCK_MODE_LOCKED_CLOSED a fonctionné dans Compat 24.x, mais la fonctionnalité a été modifiée dans les nouvelles bibliothèques de compat et LOCK_MODE_LOCKED_CLOSED empêche maintenant complètement le menu de navigation de s'afficher, même en utilisant le menu hamburger.

Le cours suivant fonctionne pour moi (Kotlin):

class MyDrawerLayout(ctx: Context) : DrawerLayout(ctx) {
  var isSwipeOpenEnabled: Boolean = true

  override fun onInterceptTouchEvent(ev: MotionEvent): Boolean {
      if (!isSwipeOpenEnabled && !isDrawerVisible(Gravity.START)) {
          return false
      }
      return super.onInterceptTouchEvent(ev)
  }

  @SuppressLint("ClickableViewAccessibility")
  override fun onTouchEvent(ev: MotionEvent): Boolean {
      if (!isSwipeOpenEnabled && !isDrawerVisible(Gravity.START)) {
          return false
      }
      return super.onTouchEvent(ev)
  }
}
2
Martin Vysny