Ich bin gefolgt der Navigationsschubladenführer von Google und ich möchte es zu einer Aktivität mit Tabulatoren und Gesten hinzufügen.
Ich möchte die Geste zum Öffnen der Navigationsleiste deaktivieren. Hat jemand eine Idee, wie das geht?
Benutzer1627990
Ich bin gefolgt der Navigationsschubladenführer von Google und ich möchte es zu einer Aktivität mit Tabulatoren und Gesten hinzufügen.
Ich möchte die Geste zum Öffnen der Navigationsleiste deaktivieren. Hat jemand eine Idee, wie das geht?
Zum Sperren können Sie Folgendes tun:
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
und zum freischalten:
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
Vielen Dank für die Klärung der akzeptierten Antwort mit dem LOCK_MODE_UNLOCKED-Flag
– Mattia Ruggiero
8. November 2016 um 11:27 Uhr
Ich denke, das ist besser als die akzeptierte Antwort, da es auch die entgegengesetzte Methode einführt
– Das weiße Lama
6. März 2017 um 10:12 Uhr
Wenn ich mDrawerLayout.setDrawerLockMode (DrawerLayout.LOCK_MODE_LOCKED_CLOSED) verwendet habe; Zum Verriegeln wurde die Schublade geschlossen, zum Verriegeln verwendete ich mDrawerLayout.setDrawerLockMode (DrawerLayout.LOCK_MODE_LOCKED_OPEN);
– Syed Hussein Mehdi
16. Februar 2019 um 7:28 Uhr
error: cannot find symbol mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
– Michael Tolsma
24. November 2020 um 13:45 Uhr
Die Antwort zum Deaktivieren des Wischens ist die richtige. Ich denke, LOCK_MODE_LOCKED_CLOSED hat in Compat 24.x funktioniert, aber die Funktionalität wurde in neueren Compat-Bibliotheken geändert und LOCK_MODE_LOCKED_CLOSED verhindert jetzt vollständig, dass das Navigationsmenü angezeigt wird, selbst über das Hamburger-Menü.
Die folgende Klasse funktioniert für mich (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)
}
}
Jörgesys
Fügen Sie bei der Verwendung auch den Schwerkraftwert hinzu setDrawerLockMode();
Mach das :
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END);
Dies sollte wie ein Zauber funktionieren
Hallo Welt
Überschreiben Sie, um das Wischen zu deaktivieren onInterceptTouchEvent
und onTouchEvent
An DrawerLayout
und sie falsch zurückgeben lassen.
Dies ist die richtige Antwort. Lassen Sie mich in der Antwort etwas näher darauf eingehen.
– Martin Wysny
4. September 2018 um 6:47 Uhr