web-dev-qa-db-fra.com

Désactiver l'écoute des gestes sur DrawerLayout

Comment désactiver la reconnaissance des gestes pour DrawerLayout? (balayez de gauche à droite) et n'acceptez que le geste de fermeture (de droite à gauche) et ouvrez le tiroir avec le bouton d'accueil? 

60

Cela a fonctionné pour moi:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

Vous pouvez agrandir le tiroir en appuyant sur le bouton Accueil et utiliser un geste de balayage de droite à gauche pour le fermer. Cependant, le balayage de gauche à droite n'est plus déclenché.

146
Thuy Trinh

Pour setDrawerLockMode(), cela se trouve dans le code mais pas dans la documentation développeur Android :

/**
 * 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;
19
greg7gkb

Pour désactiver la reconnaissance des gestes DrawerLayout, utilisez:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN);

Ensuite, pour activer le balayage de droite à gauche, vérifiez la ressource suivante: http://Android-journey.blogspot.com/2010/01/Android-gestures.html

3
Hadi

On dirait que j'ai trouvé un bug. Par exemple si défini:

Android:layout_gravity="right"

ou

Android:layout_gravity="left"

pour le contenu du tiroir et l'utilisation de .setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED) tout ira bien.

Mais dans le cas où Android:layout_gravity="left|center_vertical" ou quelque chose du genre LOCK_MODE_LOCKED_CLOSED ne fonctionnera pas.

2
ViT-Vetal-

Le LOCK_MODE_LOCKED_CLOSED empêche actuellement complètement l'affichage du menu de navigation, même via le menu hamburger (ce qui peut être indésirable). Ce qui suit a fonctionné pour moi: https://stackoverflow.com/a/52160351/377320

0
Martin Vysny

Cela a fonctionné pour moi:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

Vous pouvez agrandir le tiroir en appuyant sur l'icône Hamburger ou sur le bouton à partir duquel vous devez vous déclencher. Cependant, le balayage de gauche à droite n'est plus déclenché.

0
Prakhar Gupta