отключить свайп жест, который открывает панель навигации в Android


Я навигационный ящик руководство по Google и я хотел бы добавить его в действие с вкладками и жестами.

Я хотел бы отключить жест, чтобы открыть навигационный ящик, кто-нибудь знает, как это сделать?

5 146

5 ответов:

вы должны использовать:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

он работает со мной, салфетки, чтобы открыть Ящик был отключен.

если он все еще не будет работать, проверьте ответ, предоставленный здесь.

для блокировки вы можете сделать это:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

и для разблокировки :

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);

добавить значение силы тяжести тоже при использовании setDrawerLockMode ();

этого :

drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END);

Это должно работать как шарм

чтобы отключить считывание, переопределите onInterceptTouchEvent и onTouchEvent on DrawerLayout и пусть они вернут false.

ответ на отключение считывания является правильным. Я думаю, что LOCK_MODE_LOCKED_CLOSED работал в Compat 24.x, но функциональность была изменена в новых библиотеках compat и LOCK_MODE_LOCKED_CLOSED теперь полностью предотвращает отображение меню навигации, даже с помощью меню гамбургера.

следующий класс работает для меня (Котлин):

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