Ich habe die Navigationsschubladenanleitung von Google befolgt und möchte sie einer Aktivität mit Registerkarten und Gesten hinzufügen.
Ich möchte die Geste zum Öffnen der Navigationsschublade deaktivieren. Hat jemand eine Idee, wie das geht?
Ich habe die Navigationsschubladenanleitung von Google befolgt und möchte sie einer Aktivität mit Registerkarten und Gesten hinzufügen.
Ich möchte die Geste zum Öffnen der Navigationsschublade deaktivieren. Hat jemand eine Idee, wie das geht?
Antworten:
Du solltest benutzen:
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
Es hat bei mir funktioniert, der Wisch zum Öffnen der Schublade war deaktiviert.
Wenn es immer noch nicht funktioniert, lesen Sie die Antwort hier .
mDrawerLayout
, stellen Sie es wie folgt ein:mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
ToolBar
(API 21) zu implementieren und die darin enthaltene SlidingTabLayout
Funktion zu verwenden, die mit meinem Nav in Konflikt steht. Schubladen wischen. Also würde ich lieber die Navigation deaktivieren. Schubladenführung zugunsten der ToolBar
Schiebefunktion.
Zum Sperren können Sie Folgendes tun:
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
und zum Entsperren:
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
Fügen Sie bei Verwendung von setDrawerLockMode () auch den Schwerkraftwert hinzu .
Mach das :
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END);
Dies sollte wie ein Zauber wirken
So deaktivieren Sie klauen, überschreiben onInterceptTouchEvent
und onTouchEvent
auf DrawerLayout
und haben sie false zurück.
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 kompatiblen Bibliotheken geändert und LOCK_MODE_LOCKED_CLOSED verhindert jetzt vollständig, dass das Navigationsmenü angezeigt wird, selbst wenn das Hamburger-Menü verwendet wird.
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)
}
}
Das funktioniert bei mir
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, {Your drawer view});