J'ai suivi le guide du tiroir de navigation de Google et j'aimerais l'ajouter à une activité avec des onglets et des gestes.
Je voudrais désactiver le geste pour ouvrir le tiroir de navigation, est-ce que quelqu'un sait comment faire cela?
J'ai suivi le guide du tiroir de navigation de Google et j'aimerais l'ajouter à une activité avec des onglets et des gestes.
Je voudrais désactiver le geste pour ouvrir le tiroir de navigation, est-ce que quelqu'un sait comment faire cela?
Réponses:
Tu devrais utiliser:
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
Cela a fonctionné pour moi, le balayage pour ouvrir le tiroir était désactivé.
Si cela ne fonctionne toujours pas, consultez la réponse fournie ici .
mDrawerLayout
, réglez-le comme suit:mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
ToolBar
(API 21) et d'utiliser la SlidingTabLayout
fonctionnalité dont elle dispose, qui est en conflit avec mon Nav. tiroirs. Je préfère donc désactiver la navigation. glissière de tiroir en faveur de la ToolBar
fonction coulissante.
pour le verrouillage, vous pouvez le faire:
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
et pour déverrouiller:
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
Ajoutez également une valeur de gravité lors de l'utilisation de setDrawerLockMode () ;
Faites ceci:
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END);
Cela devrait fonctionner comme un charme
Pour désactiver glisser, override onInterceptTouchEvent
et onTouchEvent
sur DrawerLayout
et de les retourner faux.
La réponse pour désactiver le balayage 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 de compatibilité 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)
}
}
Cela fonctionne pour moi
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, {Your drawer view});