2013-06-10 11 views

Odpowiedz

125

Ten pracował dla mnie:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); 

Możesz rozszerzyć szufladę, dotykając przycisku Strona główna i możesz użyć gestu przesuwania od prawej do lewej, aby go zamknąć. Jednak przesunięcie od lewej do prawej nie jest już wyzwalane.

+16

Do odblokowania użyj mDrawerLayout.setDrawerLockMode (DrawerLayout.LOCK_MODE_UNLOCKED); –

+6

To nie działa w moim przypadku, zawsze otrzymuję szufladę na gest machnięcia, nawet jeśli ustawię układ szuflady z powyższym rozwiązaniem. –

+0

Mam ten sam problem. –

18

Dla setDrawerLockMode(), to jest w kodzie, ale nie na 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; 
+0

A teraz pojawi się na dokumentach dev: http://developer.android.com/reference/android/support/v4/widget/DrawerLayout.html#LOCK_MODE_LOCKED_CLOSED – greg7gkb

1

wyglądać znalazłem błąd. Na przykład, jeżeli zestaw:

android:layout_gravity="right" 

lub

android:layout_gravity="left" 

do zawartości szuflady i użyj .setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED) wszystko będzie dobrze.

Ale w przypadku, gdy android:layout_gravity="left|center_vertical" lub coś podobnego to LOCK_MODE_LOCKED_CLOSED nie będzie działać.

+1

Masz rację. Powód jest dobrze opisany tutaj przez @ A - C https://stackoverflow.com/questions/18413116/whyi-i-ant-lock-drawerlayout-with-layout-gravity/18413276#18413276 – Tina