Wie kann ich die Gestenerkennung für die DrawerLayout deaktivieren? (wischen Sie von links nach rechts) und akzeptieren Sie nur die Schließen-Geste (von rechts nach links) und öffnen Sie die Schublade nur mit der Home-Taste?Disable Geste Hörer auf DrawerLayout
Antwort
Das ist für mich gearbeitet:
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
Sie können die Schublade erweitern, indem Sie auf die Home-Taste tippen und die Wischgeste von rechts nach links verwenden, um sie zu schließen. Ein Streichen von links nach rechts wird jedoch nicht mehr ausgelöst.
die Verwendung DrawerLayout Gestenerkennung zu deaktivieren:
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN);
Dann nach links Swipe ermöglichen rechts, überprüfen Sie diese Ressource: http://android-journey.blogspot.com/2010/01/android-gestures.html
Für setDrawerLockMode()
ist dies im Code aber nicht auf dem Android developer docs:
/**
* 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;
Und das erscheint jetzt auf dev docs: http://developer.android.com/reference/android/support/v4/widget/DrawerLayout.html#LOCK_MODE_LOCKED_CLOSED – greg7gkb
schauen, wie ich Fehler gefunden. Zum Beispiel, wenn ein:
android:layout_gravity="right"
oder
android:layout_gravity="left"
für Schubladeninhalt und verwenden .setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED)
alles in Ordnung sein wird.
Aber in dem Fall, wenn android:layout_gravity="left|center_vertical"
oder etwas ähnliches LOCK_MODE_LOCKED_CLOSED
wird nicht funktionieren.
Sie richtig sind. Der Grund ist hier gut beschrieben von @ A - C https://stackoverflow.com/questions/18413116/why-i-cant-lock-drawerlayout-with-layout-gravity/18413276#18413276 – Tina
Zum Entriegeln es u verwenden mDrawerLayout.setDrawerLockMode (DrawerLayout.LOCK_MODE_UNLOCKED); –
Dies ist nicht in meinem Fall arbeiten, habe ich immer eine Schublade auf Swipe-Geste, auch wenn ich die Schublade Plan mit der obigen Lösung eingestellt. –
Ich habe das gleiche Problem. –