Śledzę prowadnicę szuflady nawigacji przez Google i chciałbym, aby dodać go do działania z kartami i gestów.
Chciałbym wyłączyć gest otwarcia szuflady nawigacji, czy ktoś ma jakiś pomysł, jak to zrobić?
Śledzę prowadnicę szuflady nawigacji przez Google i chciałbym, aby dodać go do działania z kartami i gestów.
Chciałbym wyłączyć gest otwarcia szuflady nawigacji, czy ktoś ma jakiś pomysł, jak to zrobić?
Odpowiedzi:
Powinieneś użyć:
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
To działało dla mnie, przeciągnięcie, aby otworzyć szufladę, było wyłączone.
Jeśli nadal nie działa, sprawdź odpowiedź podaną tutaj .
mDrawerLayout
, ustaw to w następujący sposób:mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
ToolBar
(API 21) i użyć jego SlidingTabLayout
funkcji, która jest w konflikcie z moim Nav. przeciąganie szuflady. Wolałbym więc wyłączyć Nav. prowadnica szuflady na korzyść ToolBar
funkcji przesuwu.
w celu zablokowania możesz to zrobić:
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
i do odblokowania:
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
Dodaj także wartość grawitacji podczas korzystania z setDrawerLockMode () ;
Zrób to :
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END);
To powinno działać jak urok
Aby wyłączyć przeciąganie, ręcznym onInterceptTouchEvent
i onTouchEvent
na DrawerLayout
i mieć je return false.
Odpowiedź na wyłączenie przesuwania jest poprawna. Myślę, że LOCK_MODE_LOCKED_CLOSED działał w Compat 24.x, ale funkcjonalność została zmieniona w nowszych bibliotekach kompatybilnych, a LOCK_MODE_LOCKED_CLOSED całkowicie uniemożliwia wyświetlanie menu nawigacyjnego, nawet za pomocą menu hamburgera.
Następująca klasa działa dla mnie (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)
}
}
To działa dla mnie
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, {Your drawer view});