Deaktivieren Sie die Wischgeste, die die Navigationsleiste in Android öffnet

Lesezeit: 2 Minuten

Benutzer-Avatar
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)
  }
}

Benutzer-Avatar
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

Benutzer-Avatar
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

1010640cookie-checkDeaktivieren Sie die Wischgeste, die die Navigationsleiste in Android öffnet

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy