2015-05-08 17 views
5

Próbuję zamknąć szufladę nawigacji po zakończeniu niektórych czynności natychmiast, bez przesuwania animacji. Nie zamykam go na początku aktywności, ponieważ chciałbym, aby pozostało otwarte, jeśli użytkownik wycofa się z działania. Jednak nie mogę go zamknąć bez krótkiej animacji, która się zamyka. Próbowałem odmiany następującego kodu:zamknij Szuflada nawigacji bez animacji

protected void closeDrawerImmediate() { 
    mDrawerLayout.setVisibility(View.GONE); 
    mDrawerLayout.closeDrawers(); 
    mDrawerLayout.setX(0); 
    mDrawerLayout.setVisibility(View.VISIBLE); 
} 
+0

Co dzieje się po zamknięciu go w trybie Wstrzymaj() – zgc7009

Odpowiedz

0

Można rozważyć ustawienie czasu animacji na 0. Ale wydaje się, że nie jest tak proste, jak ustawienie jednej właściwości. Oto tutorial i code, ale wymaga to importowania źródeł dla DrawerLayout i ViewDragHelper do projektu i małych modyfikacji tam.

3

Można używać nowych DrawerLayout.closeDrawer(int/View, bool) metod w V24 biblioteki wsparcia, aby natychmiast zamknąć szufladę:

drawerLayout.closeDrawer(Gravity.LEFT, false); 

Jeśli chcesz po prostu natychmiast zamknąć szufladę, takich jak kiedy rozpoczyna działalność z stukając w element szuflady, to chyba wystarczy.

Jeśli chcesz, aby zamknąć szufladę na powrót do aktywności, chciałbym ustawić pełnostanowego logiczną jak closeDrawerOnResume = true gdzie jest to stosowne (np. Rozpoczęcie nowej działalności), a następnie w onResume czeku to logiczna i zamknąć szufladę bez animacji, jeśli jest to prawda.

Powiązane problemy