J'ai suivi le guide du tiroir de navigation par Google et j'aimerais l'ajouter à une activité avec des onglets et des gestes.
J'aimerais désactiver le geste d'ouverture du tiroir de navigation, quelqu'un a-t-il une idée de comment faire ?
J'ai suivi le guide du tiroir de navigation par Google et j'aimerais l'ajouter à une activité avec des onglets et des gestes.
J'aimerais désactiver le geste d'ouverture du tiroir de navigation, quelqu'un a-t-il une idée de comment faire ?
Vous devriez utiliser :
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
Cela a fonctionné pour moi, le glissement pour ouvrir le tiroir a été désactivé.
Si cela ne fonctionne toujours pas, vérifiez la réponse fournie. aquí .
Vous êtes sûr ? J'ai essayé mais il était désactivé en ouverture et en fermeture, les deux. Je testais sur Android 2.3x avec le framework ActionBarSherlock.
J'en suis sûr car je l'ai utilisé dans mon code. Mais je ne l'ai pas utilisé avec ActionBarSherlock. Je l'ai utilisé uniquement avec ActionBar.
Pour clarifier : DrawerLayout.LOCK_MODE_LOCKED_OPEN verrouille le tiroir à l'état ouvert pour que l'utilisateur ne puisse pas le cacher. DrawerLayout.LOCK_MODE_LOCKED_CLOSED verrouille le tiroir à l'état fermé pour que l'utilisateur ne puisse pas l'ouvrir. Enfin, DrawerLayout.LOCK_MODE_UNLOCKED déverrouille le tiroir pour qu'il puisse être ouvert ou fermé.
Ajoutez également une valeur de gravité lorsque vous utilisez setDrawerLockMode() ;
Faites-le :
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END);
Cela devrait fonctionner comme un charme
La réponse à la désactivation du swiping est la bonne. Je pense que LOCK_MODE_LOCKED_CLOSED fonctionnait dans Compat 24.x, mais la fonctionnalité a été modifiée dans les bibliothèques Compat plus récentes et LOCK_MODE_LOCKED_CLOSED empêche maintenant complètement le menu de navigation de s'afficher, même en utilisant le menu hamburger.
La classe suivante 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)
}
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.