Отключить жестов салфетки, который открывает навигационный ящик в android - программирование

Отключить жестов салфетки, который открывает навигационный ящик в android

Я следил за руководством для навигатора Google, и я хотел бы добавить его в Activity с вкладками и жестами.

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

4b9b3361

Ответ 1

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

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

У меня это сработало, удар по открытию ящика был отключен.

Если это по-прежнему не работает, ознакомьтесь с ответом здесь.

Ответ 2

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

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

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

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);

Ответ 3

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

Сделай это:

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

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

Ответ 4

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

Ответ 5

Ответ на отключение смахивания является правильным. Я думаю, что 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)
  }
}

Ответ 6

Попробуй это

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

Если это не работает

Попробуйте изменить режим сворачивания ящика
Это сработало для меня:

app:layout_collapseMode="parallax"