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?
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 .
pour le verrouillage, vous pouvez faire ceci:
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
et pour déverrouiller:
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
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
Pour désactiver le balayage, remplacez onInterceptTouchEvent
et onTouchEvent
sur DrawerLayout
et donnez-leur la valeur false.
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)
}
}